Ich denke, es ist kein schwieriges Problem, aber ich finde kein Thema, um es zu lösen.Dynamische GROUP CONCAT mit SUBQUERY
1 'DRIVER' Laufwerk 1 'TRUCK' auf einmal, 1 'TRUCK' tragen mehrere 'BOXS' gleichzeitig.
Ich habe zwei Anfragen:
Die einfache:
Select a.*,
(Select IDTRUCK From TRUCKS WHERE ACTUEL= true AND IDDRIVER=IDDRIVER) as IDTRUCK
From DRIVERS a;
Ergebnis:
IDDRIVER | NAMEDRIVER | IDTRUCK
-------------------------------
1 | Michel | 45
2 | Jean | 35
und die komplizierte (Nahm von here):
SET @sql = NULL;
SELECT GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(`IDBOX` = ', `IDBOX`, ',WEIGHTBOX,NULL)) AS WEIGHTBOX', `IDBOX`)
) INTO @sql
FROM BOXS;
SET @sql = CONCAT('SELECT IDTRUCK, ', @sql, '
FROM BOXS WHERE IDTRUCK =
(Select IDTRUCK From TRUCKS WHERE ACTUEL= true AND IDDRIVER=IDDRIVER)
GROUP BY IDTRUCK');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Re Sult:
IDTRUCK | WEIGHTBOX1 | WEIGHTBOX2
-------------------------------
45 | 75.2 | 46.3
35 | 154 | 69.4
Ich möchte diese beiden Ergebnisse in einer Tabelle:
IDDRIVER | NAMEDRIVER | IDTRUCK | WEIGHTBOX1 | WEIGHTBOX2
---------------------------------------------------------
1 | Michel | 45 | 75.2 | 46.3
2 | Jean | 35 | 154 | 69.4
Aber ich weiß nicht, wie diese beiden Abfragen gehen zusammen zu machen.
Ich denke, ein JOIN kann die Arbeit machen, aber ich schaffe es nicht, erfolgreich zu sein.
PS: Sorry für mein sehr einfaches Englisch.
EDIT: Nach Shadow ist es möglich, dies mit einem linken Join (here) zu tun, aber ich weiß nicht, wo muss ich die verschiedenen Teile meiner Abfragen setzen, damit sie funktionieren. Es ist kein Problem des Verständnisses, es ist ein Problem der Syntax.
Sie müssen mehrere Tabellen verbinden, finden Sie in der doppelten Thema. – Shadow
Es mag die gute Lösung sein, aber ich weiß nicht, wie ich es mit meinem Beispiel schreiben soll. Danke trotzdem. – Barrelsrider
Haben Sie die vorgeschlagene Lösung ** probiert? Wenn ja, was haben Sie versucht und was ist schiefgelaufen? – Shadow