简体   繁体   English

MYSQL查询联接的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM