mysql - 对 3 个表进行连接

标签 mysql join

我有3个sql表

1) 带有优惠券标题的表格 - 该表格的 id 等于第二个表格的 id

2) 包含优惠券详细信息的表格 - 该表格上的 user_id 等于第三个表格的用户 id

3)包含用户详细信息的表格

到目前为止我有这个查询

"SELECT kpn_processed_deals.kpn_id,
kpn_processed_deals.purchased_date, kpn_processed_deals.claim, 
kpn_processed_deals.uid,kpn_deal_headers.kpn_type,
kpn_deal_headers.title,kpn_deal_headers.created_by
 FROM kpn_processed_deals INNER JOIN kpn_deal_headers ON
 kpn_processed_deals.kpn_id = kpn_deal_headers.kpn_id AND 
kpn_deal_headers.created_by = '$var'";

这工作得很好,但我想使用连接获取第三个表上用户电子邮件的值,但到目前为止我还没有成功。抱歉,如果我的格式很乱。我对这些事情感到恐惧。

最佳答案

只需添加另一个JOIN

"SELECT p.kpn_id, p.purchased_date, p.claim, p.uid,h.kpn_type, h.title, h.created_by, u.email
 FROM kpn_processed_deals AS p INNER
 JOIN kpn_deal_headers AS h ON p.kpn_id = h.kpn_id
 JOIN kpn_deal_users AS u ON u.user_id = p.user_id
 WHERE h.created_by = '$var'";

还要注意表别名的使用,这样您就不必在整个查询中重复详细的表名称。

对单个表的约束通常应该在 WHERE 子句中; ON 子句用于与连接表相关的条件(外连接是一个异常(exception),其中对子表的约束也需要位于 ON 子句中)。

关于mysql - 对 3 个表进行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32891631/

相关文章:

php - 从多个表中进行选择的最佳方法

mysql - 加入4张 table

php - 如何将数组存储到php中的 session 变量中

php - 在 Doctrine2 上有条件地连接表

sql - 在多个 OR 条件下连接 2 个表

php - 优化 MySQL 和 PHP 中的多个查询

c# - 如何合并两个列表并删除重复项

mysql - 重新架构 MySQL 索引

php - MySQL 查询 : right syntax to use for `SELECT users.(foo, bar)`

java - 插入查询既不执行也不给出异常