我正在努力加入3张 table .
table1.
grp_id | email_id
1 | 3
1 | 58
table2.
sam_msg_id | sam_subject
3 | Funnel
table3.
id | subject
58 | testing check
Desired Output:
id |grp_id|email_id|sam_subject|subject |
184|1 |3 |funnel | |
185|1 |58 | |testing check|
我试过的查询:
SELECT table1.*, table2.sam_subject, table3.*
FROM table1
INNER JOIN table2
ON table2.sam_msg_id = table1.email_id
INNER JOIN table3
ON table3.id = table1.email_id
WHERE table1.grp_id = '1'
我在这里要做的是从table2和table3获取主题及其id的列表,其中id在email1id下的table1中找到 .
当我尝试使用一个内连接时,只检查table2中的数据,它正在工作 .
我不熟悉使用内部连接因此我无法真正看到我做错了什么 .
我正在使用MySQL .
2 回答
听起来像你需要
LEFT JOIN
根据您的编辑,以下内容应该为您提供所需的结果:
见SQL Fiddle with Demo
我对你的要求有点困惑 . 如果您可以提供当前数据和所需输出的示例,我们可以确定解决方案 .
实际上,我怀疑你需要阅读
LEFT JOIN
,如果您的子表中没有匹配的记录,它将返回NULL
. 如果没有匹配,INNER JOIN
将不会返回记录 .请查看本文,了解不同类型的连接:
http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
更新:
我不确定您想要的结果的第一列在哪里,但下面的查询可以得到您想要的结果: