2017-07-03 2 views
0

Ich möchte einige Werte aus einer MySQL-Tabelle wie unten auswählen. Ich möchte die taktischen und ID-Variablen nur dann konkludieren, wenn die Koords-Werte übereinstimmen. Die Ausgabe der Abfrage sollte alle Zeilen in der Tabelle enthalten und die Duplikate durch nur eine Zeile ersetzen. Kurz gesagt, ich möchte zwei Zeilen zu einem kombinieren, wenn die beiden auf den Breiten- und Längenwerten übereinstimmen. Und verketten Sie mehrere Werte in Spalten. Ist das möglich?Verwenden von MySQL mit group_concat Variablen zum Erstellen einer neuen Zeile

Ursprüngliche Tabellenspalten sind: ID, netID, taktisch, Name, Breitengrad, Längengrad.

Ziel ist es, einen Marker in Google Maps zu erstellen, der die Informationen für die doppelten Datensätze enthält. Der Mapping-Teil ist fertig, ich muss nur Duplikate an dieser Stelle kombinieren.

+0

Bearbeiten Sie Ihre Frage und liefern Sie Beispieldaten und gewünschte Ergebnisse. –

Antwort

1

Ich glaube, Sie group by wollen:

SELECT CONCAT(latitude, ', ', longitude) as koords, 
     GROUP_CONCAT(tactical SEPARATOR '-') as newtact, 
     GROUP_CONCAT(ID SEPARATOR '-') as newID 
FROM `NetLog` 
WHERE netID = 276 
GROUP BY latitude, longitude; 

Warum die Entwickler von MySQL eine Abfrage lassen würde, wie Ihr ohne Fehler laufen über mich. Es ist kein Standard-SQL, da Sie nicht aggregierte Spalten im SELECT zusammen mit Aggregationsfunktionen haben.

+0

Nun, ich kann Ihre Bedenken nicht kommentieren, aber ich kann sagen, ich denke, Sie haben meine Frage beantwortet. Ich habe alle möglichen Dinge ausprobiert und trotzdem war es am Ende eine sehr einfache Lösung. Es tut mir leid, dass ich es nicht gesehen habe. Vielen Dank. –

+0

@KeithDKaiser. . . Sie könnten es viel früher gefunden haben, wenn Sie einen Fehler bekommen, der besagt, dass 'latitude' nicht in einer 'Gruppe von' ist und nicht aggregiert. –

Verwandte Themen