2017-04-07 4 views
0

Ich kann nicht scheinen, herauszufinden, was falsch läuft. Ich habe versucht, Unter-Teile der Abfrage, aber immer noch nicht das Problem zu lösen.Fehler: in der Nähe von "DISTINCT": Syntaxfehler

Tabelle Format:

poi(id int, minX float, minY float, maxX float, maxY float) 
tag(poi_id int, key text, value text) 


SELECT (DISTINCT(tag.key,tag.value), (poi.minlon*poi.minlat) 
FROM tag,poi 
WHERE tag.poi_id=tag.poi_id 
GROUP BY tag.key,tag.value; 
+0

Entfernen Sie die Klammern um tag.key, tag.value. Entfernen Sie außerdem die linke Klammer zwischen SELECT und DISTINCT. – kojow7

Antwort

1

DISTINCT ist keine Funktion und Parameter nicht statt. Es muss auch unmittelbar nach dem SELECT-Schlüsselwort folgen. Versuchen Sie stattdessen:

SELECT DISTINCT tag.key, tag.value, (poi.minlon*poi.minlat) 
FROM tag,poi 
WHERE tag.poi_id=tag.poi_id 
GROUP BY tag.key,tag.value; 

DISTINCT auf die gesamte Tupel gilt (Zeile) zurückgeführt, nicht auf Werte in den einzelnen Spalten.

+0

Ich habe das gedacht. Ich frage mich, ob DISTINCT die Ergebnisse der Multiplikation stören würde? – Newbie

+0

Wenn doppelte Werte in jeder Spalte einschließlich des Ergebnisses Ihrer Berechnung vorhanden sind, werden die duplizierten Zeilen aus dem Endergebnis entfernt, wobei nur ein Vorkommen dieser Zeile verbleibt. – kojow7

+0

Sie sollten in der Lage sein, einen einfachen Test einzurichten, um dies zu überprüfen. Geben Sie zwei Datensätze mit tag.key und tag.value mit den gleichen Werten ein und legen Sie dann minlon und minlat auf Werte von (5, 10) für den ersten Datensatz und (2, 25) für den zweiten Datensatz fest. – kojow7

Verwandte Themen