查询具有主id的多个表以匹配其他表的entry_id

时间:2015-08-24 01:59:23

标签: php mysql

我正在尝试查询多个表以从每个表中获取信息。

主表格为wp_connections.id,其中包含first_namelast_name列。

wp_connections.id匹配其他表的所有.entry_id列。

以下是我的查询:

SELECT wp_connections.first_name, wp_connections.last_name, wp_connections.slug, wp_connections.options, wp_connections_phone.number, wp_connections_email.address 
FROM wp_connections, wp_connections_phone, wp_connections_email, wp_connections_address 
WHERE wp_connections.id = wp_connections_phone.entry_id 
&& wp_connections_phone.entry_id = wp_connections_email.entry_id
&& wp_connections_email.entry_id = wp_connections_address.entry_id AND state = 'Ohio' GROUP BY wp_connections.id

这是不正确还是还有其他更好的方式?

这确实显示了结果,但未显示所有结果。我不确定我是否需要加入,或者是什么。

1 个答案:

答案 0 :(得分:1)

如果您看到一些结果,但不是全部,那么您可能需要left join。也就是说,俄亥俄州的一些记录中缺少电话号码或电子邮件:

SELECT w.first_name, w.last_name, w.slug, w.options,
       w_phone.number, w_email.address 
FROM wp_connections w INNER JOIN
     wp_connections_address w_address 
     on w.id = w_address.entry_id LEFT JOIN
     wp_connections_phone w_phone
     on w.id = w_phone.entry_id LEFT JOIN
     wp_connections_email w_email
     on w.id = w_email.entry_id
WHERE w_address.state = 'Ohio';

您的最终GROUP BY没有做任何事情,除非某些记录在一个或多个表格中有多个条目。