Frage

Ich versuche, diesen SQL-Befehl auszuführen:

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) 
; 

Wenn ich dies tun, bekomme ich folgende Fehlermeldung:

    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.

Ich habe versucht, und fügte hinzu: ORDER BY (page.page_namespace, pagelinks.pl_namespace) ASC an das Ende der Abfrage ohne Erfolg.

UPDATE:

Ich habe auch versucht dies:

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) 
; 

Aber ich immer noch die gleichen Fehler.

Thx

War es hilfreich?

Lösung

Ich habe keine Dokumentation, sondern die Tatsache, überprüft, dass Sie Ihren GROUP BY Ausdruck in Klammern sieht ungewöhnlich für mich haben. Was passiert, wenn Sie Klammern nicht hier verwenden?

Andere Tipps

Ich bin nicht wirklich ein Experte, aber mein Verständnis dieser Nachricht ist, dass PostgreSQL compains über nicht entweder page.page_namespace <=3 oder pagelinks.pl_namespace <=3 in der Lage zu handhaben. Um einen Vergleich wie, dass Sie benötigen einen Auftrag definiert haben, und vielleicht eines dieser Felder ist kein Standard-Zahlenfeld. Oder vielleicht gibt es einige Probleme mit integer vs. Gleitkomma - z.B. die Frage, ob „3,0 = 3“ ist nicht wirklich so einfach, da die Gleitkommadarstellung von 3,0 zu beantworten ist höchstwahrscheinlich nicht genau 3.

Alles nur Vermutungen, aber ich bin mir ziemlich sicher, dass diese beiden <=s sind Ihr Problem.

Nun, ich weiß nicht, das Schema (*) Sie verwenden, aber die Fehlermeldung scheint klar. Eines Ihrer Spalten ist vom Typ RECORD und es gibt keine Betreiber RECORD.But einige Teile Ihrer Abfrage wie <= erfordert eine solche Ordnungsoperator zu bestellen. Mit ORDER BY ist unwahrscheinlich, da der Kern des Problems zu helfen, ist das Fehlen eines Betreibers zu bestellen ...

(*) von Ihren anderen Fragen, gehe ich davon aus Ihrem Schema ist Wikipedia-Dump in http://download.wikimedia.org/enwiki/latest/enwiki-latest-page.sql.gz Richtig?

i hat einige Fehler. aber ich fand diese Seite, http://www.w3schools.com/sql/sql_groupby.asp es ist einfach, müssen Sie ohne Klammern Gruppe zum Beispiel:

GROUP BY (page.page_namespace, pagelinks.pl_namespace) die richtige ist  GROUP BY page.page_namespace, pagelinks.pl_namespace

Grüße !!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top