LEFT JOIN多个ID

时间:2015-09-18 11:45:59

标签: php mysql join left-join

我想在我的网络应用上改进我的搜索方法。

我有一个小票务系统。每个故障单都有一个自己的数据库条目(表:tickets)。每张票可以有多条消息(表:tickets_messages)。每条消息都可以通过多种方式发送(表格:messagestickets_messages_mapping)。

例如:

ID 4的故障单包含2条消息(IDs: 1 and 2)。这些邮件已由emailsms发送。

现在我们得到了以下布局(请参阅此链接以获取SQL小提琴http://sqlfiddle.com/#!9/07891):

tickets:
ID: 4
date: 2015-09-18


tickets_messages:
ID: 1
--------
ID: 2

tickets_messages_mapping:
ID: 5
TICKETMESSAGEID: 1
MESSAGEID: 15
--------
ID: 6
TICKETMESSAGEID: 2
MESSAGEID: 16

messages:
ID: 15
CONTENT: Hello
FROM: John Doe
TO: ME
GATEWAY: SMS
--------
ID: 16
CONTENT: World
FROM: JOHN DOE
TO: ME
GATEWAY: EMAIL

现在我想创建一个搜索词,在那里我可以搜索票证日期(作品),票证ID(作品)和票证内容(不起作用):

这是我第一次尝试获取所有信息并使其可搜索:

SELECT DISTINCT a.ticketid, GROUP_CONCAT(tm.id) as messageid, GROUP_CONCAT(tmm.messageid) as ticketmessageid, GROUP_CONCAT(mess.content)
FROM `dia9__speedball_tickets` AS a 
LEFT JOIN dia9__speedball_tickets_messages as tm ON tm.ticketid = a.id 
LEFT JOIN dia9__speedball_tickets_messages_mapping as tmm ON tmm.ticketmessageid = tm.id
LEFT JOIN dia9__speedball_messages as mess ON tmm.ticketmessageid = mess.id
GROUP BY a.id

我希望得到的结果是分配给此ticket-id的消息列表,可能用逗号分隔。事实上我想获得如下行:ticketid,title,date,content ticketid:1 title:测试日期:2015-09-18内容:Message1,Message2,Message3

有什么想法在mysql中解决这个问题吗?

0 个答案:

没有答案