MYSQL SELECT从两个有或没有外键的表中获取行


MYSQL SELECT To fetch rows from two tables with or without a foreign key

我正在寻找一些帮助与MYSQL查询。我有两个表,一个包含tickets的列表,另一个包含members的列表。

表门票:ticket_id,member_id表成员:member_id

成员可以(但不必)被分配给一个票。我想做的是选择所有的门票,然后如果member_id字段在门票表中设置,获取成员信息。

一种方法是执行SELECT * FROM Tickets,然后在PHP中循环并检查member_id字段是否设置。如果设置,则在members表上执行另一个查询以获取相应的信息。唯一的问题是,这将是大量的查询。

是否有办法在一个连接查询中获取所有结果?

谢谢

Select *
from Tickets
Left Join Members On tickets.member_id = members.member_id
select * from tickets left outer join members on tickets.member_id = members.ticket_id
SELECT t.ticket_id, t.member_id FROM tikcets t LEFT JOIN members m ON t.member_id = m.member_id

这将给你所有的票,无论他们是否被分配给一个成员。您应该在查询中添加您想要获取的其他字段。

试试这个:

SELECT t.ticket_id, m.member_id
FROM tickets AS t LEFT OUTER JOIN members AS m 
ON t.member_id = m.member_id

LEFT OUTER JOIN将导致返回所有票证的结果,以及来自成员的任何匹配,而不会取消票证记录的资格,所以这可以做到这一点。