将表连接到另外2个表的MySQL查询

时间:2015-11-22 15:03:43

标签: mysql

我所拥有的是3个表格(已加星标的ID可能为空):

ITEMS
id|name|cost

EVENTS
id|name|date|assignment|items

ASSIGNMENTS
id|name|start|items

其中ITEMS包含成本行 - 事件可能花费X,拥有该事件的任务/项目可能有自己的成本。事件和分配表中的所有项目都以逗号分隔的ID列表引用。

鉴于作业,我想

ASSIGNMENTS.NAME|EVENTS.NAME|ITEMS.NAME|ITEMS.COST
Assignment A                 management  10.00
Assignment A     event A     travel exp  60.00
Assignment A     event A     day cost   100.00
Assignment A     event B     day cost    90.00

我尝试了子查询方式,构建一个子查询,返回带有

的Items列表
SELECT assignments.name, events.name, 
       concat(events.items, ",", assignments.items) 
  FROM assignments left join events 
  ON find_in_set(events.assignment, assignments.id) where assignments.id=2

但是这样我会将分配项目列出两次,最糟糕的是,我会得到一行(没有事件的作业),并以逗号开头。

我也尝试过两次加入同一张桌子,但后来MySQL记得我不能这样做。

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

试试这种方式

SELECT assignments.name, events.name, 
   concat(events.items, ",", assignments.items) 
FROM assignments left join events 
ON events.assignment = assignments.id
where assignments.id=2