首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有两个连接和一个Where子句的MySQL

具有两个连接和一个Where子句的MySQL
EN

Stack Overflow用户
提问于 2013-03-27 01:43:17
回答 1查看 42关注 0票数 0

我有3个表我想加入。

office包含办公室的地址/联系方式详细信息。CRIMECAT包含办公室可能处理的犯罪法律类别,并通过“f_id”与办公室表相关。CIVILCAT包含办公室可能处理的民事法类别,也通过“f_id”与办公室表相关。

一个办公室可以处理各种类别的犯罪法律,民事法律,两者兼而有之,或者都不处理。

用户输入一个位置,并在点击搜索之前通过一系列复选框来决定他们感兴趣的法律领域。然后,这应该返回一个处理该位置中任何选中类别的办公室的地址列表。

这对于犯罪类别或民事类别都非常有效,但一旦选择了其中一个或多个类别,查询就会返回零结果。

查询的工作方式如下:

代码语言:javascript
复制
SELECT DISTINCT OF.f_id, OF.acc, OF.add1, OF.add2, OF.add3, OF.city, OF.pc, OF.tel
FROM office OF
JOIN crimecat CR ON OF.f_id=CR.f_id
WHERE OF.id ='3946' AND CR.cat = 'crm'

我用头撞砖墙的问题是:

代码语言:javascript
复制
SELECT DISTINCT OF.f_id, OF.acc, OF.add1, OF.add2, OF.add3, OF.city, OF.pc, OF.tel
FROM office OF
JOIN crimecat CR ON OF.f_id=CR.f_id
JOIN civilcat CI ON OF.f_id=CI.f_id
WHERE OF.id ='3946' AND ((CR.cat = 'crm') OR (CI.cat = 'aap'))

我还尝试使用WHERE子句的一个变体,它也返回零:

代码语言:javascript
复制
WHERE (OF.id ='3946' AND CR.cat = 'crm') OR (OF.id ='3946' AND CI.cat = 'aap')

我开始认为问题出在连接(S)而不是WHERE子句上,但是想不出更好的方法来编写它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-27 01:50:57

像这样的事情可能会有所帮助。我怀疑你正在寻找其中的任何一个,但你同时要求两个

代码语言:javascript
复制
SELECT DISTINCT OF.f_id, OF.acc, OF.add1, OF.add2, OF.add3, OF.city, OF.pc, OF.tel
FROM office OF
LEFT JOIN crimecat CR ON OF.f_id=CR.f_id
LEFT JOIN civilcat CI ON OF.f_id=CI.f_id
WHERE OF.id ='3946' AND ((CR.cat = 'crm') OR (CI.cat = 'aap'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15643912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档