每个派生表必须有自己的别名

时间:2014-03-28 12:19:17

标签: mysql sql sql-server

当我尝试运行此SQL查询时 我收到以下错误:“每个派生表必须有自己的别名”

sql查询:

SELECT * FROM `evenement` 
LEFT JOIN `evenementontvanger` ON `evenementontvanger`.`idEvent` = `evenement`.`id` 
LEFT JOIN (SELECT `Werknemer`,
                      GROUP_CONCAT(`Initialen`) AS `Initials`
                 FROM `Werknemer` )  
WHERE `idEvent`=`evenement`.`id` AND `evenementontvanger`.`idWerknemer`=20

我不能让它运行。 有人可以帮助我PLZ 因为它确实在没有组连接的情况下运行

5 个答案:

答案 0 :(得分:2)

SELECT * 
FROM `evenement` LEFT JOIN `evenementontvanger` 
ON `evenementontvanger`.`idEvent` = `evenement`.`id` 
LEFT JOIN (SELECT `Werknemer`,
                  GROUP_CONCAT(`Initialen`) AS `Initials`
           FROM `Werknemer` ) a --<-missing alias here
on sometablename.somecolumnname = a.somecolumnname
WHERE evenementontvanger.idEvent =evenement.id
AND `evenementontvanger`.`idWerknemer`=20

答案 1 :(得分:1)

您需要为内联选择提供别名,如下所示:

(SELECT `Werknemer`,
                  GROUP_CONCAT(`Initialen`) AS `Initials`
             FROM `Werknemer` ) AS [tableName]

答案 2 :(得分:1)

只需添加别名:

SELECT *
FROM `evenement` LEFT JOIN
     `evenementontvanger
      ON `evenementontvanger`.`idEvent` = `evenement`.`id` LEFT JOIN
      (SELECT `Werknemer`, GROUP_CONCAT(`Initialen`) AS `Initials`
       FROM `Werknemer`
      )  w
---------^
      on w.`idEvent` = `evenement`.`id` 
WHERE `evenementontvanger`.`idWerknemer` = 20;

注意我在on添加了join子句。对于所有表,使用表别名,整个查询看起来会更好:

SELECT *
FROM `evenement` e LEFT JOIN
     `evenementontvanger eov
      ON eov.`idEvent` = e.`id` LEFT JOIN
      (SELECT `Werknemer`, GROUP_CONCAT(`Initialen`) AS `Initials`
       FROM `Werknemer` w
      )  w
---------^
      on w.`idEvent` = e.`id` 
WHERE eov.`idWerknemer` = 20;

答案 3 :(得分:0)

将其更改为

SELECT * 
FROM `evenement` LEFT JOIN `evenementontvanger` 
ON `evenementontvanger`.`idEvent` = `evenement`.`id` 
LEFT JOIN (SELECT `Werknemer`,
                  GROUP_CONCAT(`Initialen`) AS `Initials`
           FROM `Werknemer` ) AS subQuery
ON subQuery.XYZ = ...
WHERE `idEvent`=`evenement`.`id` 
AND `evenementontvanger`.`idWerknemer`=20

答案 4 :(得分:0)

SELECT `Werknemer`,
                  GROUP_CONCAT(`Initialen`) AS `Initials`
           FROM `Werknemer` 

这个select语句返回一些东西。您尝试将其与其他表格连接,因为您需要为此语句指定一个名称并给出colomn,以便sql知道如何加入它们。它应该看起来像这样。

SELECT * 
FROM `evenement` LEFT JOIN `evenementontvanger` 
ON `evenementontvanger`.`idEvent` = `evenement`.`id` 
LEFT JOIN (SELECT `Werknemer`,
                  GROUP_CONCAT(`Initialen`) AS `Initials`
           FROM `Werknemer` )   as GIVE_AN_NAME on give_an_name.column = 'evenement'.column
WHERE `idEvent`=`evenement`.`id` 
AND `evenementontvanger`.`idWerknemer`=20