gpt4 book ai didi

php - 使用 1 个查询将 3 个表与 mySQL 连接起来

转载 作者:行者123 更新时间:2023-11-29 04:00:05 29 4
gpt4 key购买 nike

这已在不同的情况下被询问和回答,但我所看到的一切都不能完全解决我的问题。

问题:我有 3 个表需要同时从中提取数据以比较和检索信息。所有 3 个表都包含一个“电子邮件”列。现在,来自 table1 的用户电子邮件可能与 table2 和 table3 中的同一用户的电子邮件匹配,具体取决于用户的状态。或者来自 table1 的电子邮件将仅匹配 table2 或 table3 中的电子邮件,再次取决于用户的状态。例如,用户可能具有红色状态(用户将显示在表 2 中)、蓝色状态(用户将显示在表 3 中)或两者兼有,红色和蓝色(用户将显示在表 2 和表 3 中)。

需要什么:来自表 1 的电子邮件需要与表 2 和表 3 中的电子邮件进行比较,并返回给定用户的区域值,该值记录在表 2 和表 3 中,但不在表 1 中。我知道。令人愉快的数据架构!无论哪种方式,我都能够非常成功地将 table1 JOIN 连接到 table2,但我不确定如何使用 table3 进行 JOIN

这是对 2 个表的查询:

SELECT * FROM table1
INNER JOIN table2
ON table2.email = table1.email
WHERE month = 'numberHere' ORDER BY submitdate DESC

当我简单地添加另一个 INNER JOIN 时,我的代码并没有中断,但它也没有给我任何要显示的行。因此,尽管网络上有许多工作示例,但下面的代码不起作用:

SELECT * FROM table1
INNER JOIN table2
ON table2.email = table1.email
INNER JOIN table3
ON table3.email = table2.email
WHERE month = 'numberHere' ORDER BY submitdate DESC

最佳答案

要在任何情况下都匹配来自 table1 的行,并且仅匹配其他表的行,您必须使用 LEFT JOIN,连接 table2table3table1(不是 table2table1table3tabel2):

SELECT * FROM table1
LEFT JOIN table2
ON table2.email = table1.email
LEFT JOIN table3
ON table3.email = table1.email

通过这种方式,即使在其他表中没有匹配项,您也可以从 table1 中选择值。

查看有关 SQL 连接的更多信息:Different SQL Joins

关于php - 使用 1 个查询将 3 个表与 mySQL 连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35024709/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com