动态GROUP CONCAT与SUBQUERY

时间:2016-05-23 09:54:13

标签: mysql subquery group-concat

我认为这不是一个难题,但我找不到任何解决方法。

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

我希望将这两个结果放在一个表中:

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

但我不知道如何将这两个问题放在一起。

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

PS:对不起我非常基本的英语。

编辑:根据Shadow,可以使用左连接(here)来执行此操作但我不知道在哪里可以将查询的不同部分放在一起来制作它们工作。这不是理解问题,而是语法问题。

1 个答案:

答案 0 :(得分:0)

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

document.onkeypress = function(evt) {
  var charCode = evt.keyCode || evt.which,
          char = String.fromCharCode(charCode),
      passList = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÅÉ_éabcdefghijklmnopqrstuvwxyzäö倣";
  !!~passList.indexOf(char) && do something;
};
相关问题