我无法弄清楚如何加入2个表格。 我只是希望从另一个表中加入1列,但添加它会在表中创建大量重复数据。
第一张表:"设备":
id | device_type | open_ticket_count | device_owner
1 | tablet | 1 | bob
2 | smartphone | 0 |
3 | printer | 1 | sally
第二张桌子:"门票":
id | due_at
1 | 25/12/2016
2 |
3 | 13/11/2016
我想加入他们,所以它是这样的:
id | device_type | open_ticket_count | device_owner | due_at
1 | tablet | 1 | bob | 25/12/2016
2 | smartphone | 0 | |
3 | printer | 1 | sally | 13/11/2016
我该怎么做?
此代码创建了292行,但只有3个设备和2个票据打开?
SELECT devices.id, devices.device_type, devices.open_ticket_count, devices.primary_owner_name AS Assigned_Owner, tickets.id, tickets.due_at
FROM devices CROSS JOIN tickets where devices.user_tag = '|pool devices|' AND tickets.due_at
关于如何展示的任何想法
所有带有due_at列的设备?
答案 0 :(得分:0)
安迪,试试
SELECT devices.id, devices.device_type, devices.open_ticket_count, devices.device_owner AS Assigned_Owner, tickets.due_at
FROM devices INNER JOIN tickets
ON devices.id = tickets.id
WHERE due_at IS NOT NULL
虽然这假设tickets.due_at
null
列为id = 2
但如果您在设备表中排除了open_ticket_count = 0
的行,则会得到相同的结果(如果没有匹配的票据行,则假设为零
答案 1 :(得分:0)
SELECT D.id, D.device_type, D.open_ticket_count, D.device_owner, T.due_at
FROM Devices D LEFT OUTER JOIN Tickets T
ON D.id = T.id
您想要显示左侧列中的所有行,因此您需要 LEFT OUTER JOIN 。