带有 SUBQUERY 的动态 GROUP CONCAT

Dynamic GROUP CONCAT with SUBQUERY

我认为这不是一个难题,但我没有找到任何主题来解决它。

1 'DRIVER' 一次驱动 1 'TRUCK', 1 'TRUCK' 一次携带多个 'BOXS'。

我有两个问题:

简单的:

Select a.*,
   (Select IDTRUCK From TRUCKS WHERE ACTUEL= true AND IDDRIVER=IDDRIVER) as IDTRUCK
From DRIVERS a;

结果:

  IDDRIVER | NAMEDRIVER | IDTRUCK
  -------------------------------
     1     |   Michel   |    45
     2     |    Jean    |    35

和复杂的(摘自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;

结果:

IDTRUCK | WEIGHTBOX1 | WEIGHTBOX2
-------------------------------
   45   |   75.2     |    46.3
   35   |   154      |    69.4

我想要这两个结果合二为一 table :

IDDRIVER | NAMEDRIVER | IDTRUCK | WEIGHTBOX1 | WEIGHTBOX2
---------------------------------------------------------
   1     |   Michel   |   45    |   75.2     |    46.3
   2     |    Jean    |   35    |   154      |    69.4

但我不知道如何将这两个查询结合起来。

我认为 JOIN 可以完成这项工作,但我没有成功。

PS:对不起,我的英语很基础。

编辑:根据 Shadow, it's possible to do this with a left join (here) 但我不知道我必须将查询的不同部分放在哪里才能使它们工作。不是理解的问题,是句法的问题

您可以在动态查询中包含其他表。像这样:

SET @sql = CONCAT('
  SELECT d.*, t.IDTRUCK, ', @sql, ' 
  FROM DRIVERS d
    JOIN TRUCKS t ON ACTUEL = TRUE AND t.IDDRIVER = d.IDDRIVER;
    LEFT JOIN BOXS b ON BOXS.IDTRUCK = t.IDTRUCK
  GROUP BY t.IDTRUCK');