2016-07-12 1 views
1

ich in einer MySQL-Datenbank für jede Bestellung zwei Reihen haben, sie beide die alle die gleichen Informationen haben abgesehen von:verschmelzen zwei Reihen in einer und jede Menge Daten

Pickup-Standort-ID

ich fragen, ob es einen Weg gibt, um die Zeilen in einer fusionieren, während die Row1

pickup-location-id für EX Verketten

Pickup-Ort-id2 für EX row2

In ONE ROW mit der Auftragsnummer für beide verwendet.

Dies ist der nächstgelegene ich bekam ....

SELECT * 
    FROM `t_order-transportation` 
    INNER JOIN (SELECT `pickup-location` AS `pickup-location-2`, 
       `order-id` 
       FROM `t_order-transportation` 
       GROUP BY `pickup-location` 
       HAVING COUNT(id) > 1) dup 
      ON `t_order-transportation`.`order-id` = dup.`order-id` 

dies fast tut, was ich will, aber es scheint, 4 Zeilen anzeigt werden, 2 für die Originale und 2 für die neuen Zeilen mit die Konkatation in beide Richtungen.

Sample of select return || RED IS ORIGINAL ROWS

MYSQL FIDDLE: http://sqlfiddle.com/#!9/4b441/1

+0

bitte mehr erarbeiten und SQL-Geige bieten –

+0

hinzugefügt fiddle althou gh Geige gibt 4 Zeilen nicht zurück, nur 2 zeigt auch versucht, besser zu erklären. – Rich

+0

Benötigen Sie Abholorte in getrennten Feldern oder können Sie nur in einem Feld verketten? Wenn es Ihnen nichts ausmacht, können Sie GROUP_CONCAT verwenden http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat – corretge

Antwort

0

schlage ich eine einfache Inner Join

SELECT a.*, b.* 
FROM `t_order-transportation` as a 
INNER JOIN `t_order-transportation` as b 
       on (a.`order-id` = b.`order-id` 
       and a.`pickup-datetime` < b.`pickup-datetime`) 

für den Standort können Sie

SELECT a.*, b.`pickup-location` 
FROM `t_order-transportation` as a 
INNER JOIN `t_order-transportation` as b 
       on (a.`order-id` = b.`order-id` 
       and a.`pickup-datetime` < b.`pickup-datetime`) 
+0

Dies scheint eine bessere Struktur zu sein, obwohl dies nicht gerade die volle Aktion ausführt, die ich suche. Sie möchten nur die Zeilen zusammenführen, während Sie den eindeutigen Wert der zweiten Zeile hinzufügen. – Rich

+0

Ich habe Update tyhe Antwort hinzufügen nur Pickup-Standort für zweite Tabelle .. ich hoffe, das ist, was Sie suchen .. sowieso lassen Sie es mich wissen .. – scaisEdge

+0

Dies produziert das gleiche Ergebnis habe ich jetzt, mit einer einfacheren Abfrage, es gibt 4 Reihen für jede Auftrag-ID zurück ist das einzige Problem jetzt. – Rich

Verwandte Themen