質問

このSQLコマンドを実行しようとしています:

SELECT page.page_namespace, pagelinks.pl_namespace, COUNT(*) 
    FROM page, pagelinks
    WHERE 
        (page.page_namespace <=3 OR page.page_namespace = 12 
            OR page.page_namespace = 13
        ) 
        AND 
        (pagelinks.pl_namespace <=3 OR pagelinks.pl_namespace = 12 
            OR pagelinks.pl_namespace = 13
        )
        AND 
        (page.page_is_redirect = 0)
        AND 
        pagelinks.pl_from = page.page_id 
    GROUP BY (page.page_namespace, pagelinks.pl_namespace) 
; 

これを行うと、次のエラーが表示されます:

    ERROR:  could not identify an ordering operator for type record
    HINT:  Use an explicit ordering operator or modify the query.

    ********** Error **********

    ERROR: could not identify an ordering operator for type record
    SQL state: 42883
    Hint: Use an explicit ordering operator or modify the query.

クエリの最後に ORDER BY(page.page_namespace、pagelinks.pl_namespace)ASC を追加しようとしましたが、成功しませんでした。

更新:

これも試しました:

SELECT page.page_namespace, pagelinks.pl_namespace, COUNT(*) 
    FROM page, pagelinks
    WHERE pagelinks.pl_from = page.page_id 
    GROUP BY (page.page_namespace, pagelinks.pl_namespace) 
; 

しかし、私はまだ同じエラーを受け取ります。

Thx

役に立ちましたか?

解決

ドキュメントを確認していませんが、括弧内にGROUP BY式があるという事実は私には珍しいようです。ここで括弧を使用しないとどうなりますか?

他のヒント

私は実際には専門家ではありませんが、そのメッセージを理解しているのは、PostgreSQLがpage.page_namespace <=3またはpagelinks.pl_namespace <=3のいずれかを処理できないことを強調しているということです。このような比較を行うには、順序を定義する必要があり、これらのフィールドの1つは標準の数値フィールドではない可能性があります。または、整数と浮動小数点の問題があるかもしれません-例えば質問if <!> quot; 3.0 = 3 <!> quot; 3.0の浮動小数点表現はほとんどの場合正確に3ではないため、答えるのはそれほど簡単ではありません。

すべて当て推量ですが、これら2つの<=が問題であると確信しています。

まあ、私はあなたが使用しているスキーマ(*)を知りませんが、エラーメッセージははっきりしているようです。列の1つは RECORD タイプであり、レコードを注文する演算子。ただし、<!> lt; =などのクエリの一部には、このような順序演算子が必要です。問題の核心は、注文する演算子がないことであるため、ORDER BYを使用しても助けになりそうにありません...

(*)他の質問から、スキーマは http://download.wikimedia.org/enwiki/latest/enwiki-latest-page.sql.gz 正しいですか

iにエラーがあります。 しかし、私はこのページを見つけました、 http://www.w3schools.com/sql/sql_groupby.asp 簡単です、括弧なしでグループ化する必要があります 例:

GROUP BY(page.page_namespace、pagelinks.pl_namespace) 正しいのは  GROUP BY page.page_namespace、pagelinks.pl_namespace

ご挨拶!!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top