MYSQL两个表加入并得到结果基础上,并仅通过相同的字段值
详情:http://screencast.com/t/fTRzyqsoMYSQL两个表加入并得到结果基础上,并仅通过相同的字段值
基本上有2个MySQL表(联系人和交易),并需要获得的两个条件
的基础上的ContactID- 获取的所有联系人(使用ContactID),那里是所有
- 没有成交仅获得那些联系人谁都有一个或多个交易记录,但所有的人都与取消状态。
帮助!?
你可以用一个简单的LEFT连接实际完成这个...并查找NULL(未找到)。通过进行左连接,它会从左表中获取所有记录,而不管右侧是否匹配。因此,如果我们将联接条件设置为您的交易表,则取消匹配=“否”,并且我们找到匹配项,则忽略结果集中的匹配项。如果交易中没有记录,或者它们全部设置为取消=“是”,则它们被排除在联接条件之外,因此将被视为“未找到”
select
c.ContactID
from
Contacts c
LEFT JOIN Transactions t
on c.ContactID = t.ContactID
AND t.Cancelled = "yes"
where
t.contactID is null
好吧,这个工程,除了我必须改变t.Cancelled '是'才能得到正确的结果。非常感谢! – Ahmed 2012-04-17 23:56:47
@Ahmed,实际上不......你想看看任何有YES的东西...如果它找到一个,那些是你想忽略的东西...因此,逻辑NEGATIVE不会找到一个并获得我开始的是NULL。如果您的取消状态全部大写,则更改为“是”或“是”,无论您的一致性值设置如何。但改为“是”却没有答案。如果某人有YES和NO,它会发现NO,包括它并且是错误的,因为在测试中没有YES。 – DRapp 2012-04-18 00:02:55
执行... **从 联系人选择 c.ContactID Ç LEFT JOIN交易牛逼 上c.ContactID = t.ContactID AND t.Cancelled = “是” 其中 t.contactID为空* * 我得到3,5,6- 但是执行 **从 联系人选择 c.ContactID ç LEFT JOIN交易吨 上c.ContactID = t.ContactID 甲ND t.Cancelled =“no” 其中 t.contactID为空** 给了我期望的联系人Id结果2,4,6 有意义吗? – Ahmed 2012-04-18 00:18:40
您是否要求SQL代码?你有什么尝试? – Aaron 2012-04-17 21:02:48