[英]issue with MYSQL Query join
i am performing search function i have contactgroup and language, 我正在执行搜索功能,我有联络人和语言,
Here is mysql query: 这是mysql查询:
$sql = "SELECT * FROM contact where isdeleted = 0 ";
if ($language !="" && $language !="Empty" ){
$language_exp = explode(',', $language);
$sql .= " INNER JOIN contactlanguage ON contact.id = contactlanguage.contactid
INNER JOIN language ON contactlanguage.languageid = language.id AND language.language in ('".implode("', '", $language_exp)."')";
}
if ($contactgroup !="" && $contactgroup !="Empty" ){
$contactgroup_exp = explode(',', $contactgroup);
$sql .= " AND contactgroup in ('".implode("', '", $contactgroup_exp)."')";
}
there are three cases first if i select only language the it will perform query like this 首先有三种情况,如果我只选择语言,它将执行这样的查询
its not working 它不起作用
SELECT * FROM contact where isdeleted = 0 INNER JOIN contactlanguage ON contact.id = contactlanguage.contactid INNER JOIN language ON contactlanguage.languageid = language.id AND language.language in ('English', '')
second if not selected language only selecting contactgroup its working, 第二,如果未选择语言,则仅选择其工作的联系人组,
SELECT * FROM contact where isdeleted = 0 AND contactgroup in ('Contactgroup1', '')
third case if i select both language and contactgroup its not working 第三种情况,如果我同时选择语言和contactgroup,则无法正常工作
SELECT * FROM contact where isdeleted = 0 INNER JOIN contactlanguage ON contact.id = contactlanguage.contactid INNER JOIN language ON contactlanguage.languageid = language.id AND language.language in ('English', '') AND contactgroup in ('Contactgroup1', '')
can anyone guide me how to perform the query for case 1 and case 3,thanks 谁能指导我如何执行案例1和案例3的查询,谢谢
The JOIN query is wrong and you will need to move the where condition after the JOIN statement something as JOIN查询是错误的,您将需要在JOIN语句之后将where条件移动为
SELECT * FROM contact
INNER JOIN contactlanguage ON contact.id = contactlanguage.contactid
INNER JOIN language ON contactlanguage.languageid = language.id
where
isdeleted = 0
AND language.language in ('English', '')
The query's are wrong. 查询是错误的。 You must first add the join
statement and thene then where
您必须先添加join
语句,然后where
SELECT * FROM contact INNER JOIN contactlanguage ON contact.id = ... where isdeleted = 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.