Выбор SQL с несколькими и - PullRequest
       26

Выбор SQL с несколькими и

0 голосов
/ 13 апреля 2011

У меня очень длинное выражение sql, к которому я пытаюсь добавить условия AND, но оно не работает.

Вот мое утверждение:

if($cat=="att") { $sqlCatC = "INNER JOIN yt_att_data CAT
    ON CAT.busID = R.id AND CAT.subcatID = 5 AND CAT.subcatID = 136 AND CAT.deleted = 0"; }

//Get RegionInfo busID based on region, approved
    $sql= "SELECT DISTINCT CAT.busID,R.id,companyName,membershipID,addressID,city,logo,descriptionShort FROM yt_Business_RegInfo R
    $sqlReg
    INNER JOIN yt_Business_Seasons S
    ON R.id = S.busID AND S.deleted = 0
    INNER JOIN yt_Business_Address A
    ON R.addressID = A.id
    INNER JOIN yt_Business_Membership M
    ON R.membershipID = M.id AND M.approved = 1
    $sqlCatC
    WHERE R.deleted = 0
    ORDER BY R.companyName ASC LIMIT $start, $limit";

В топ $ sqlCatC я пытаюсь добавить условие AND, где CAT.subcatID равен 5 и 136. Он работает с проверкой одного CAT.subcatID, но не двух. Любые предложения будут оценены.

Ответы [ 3 ]

2 голосов
/ 13 апреля 2011

Используйте ключевое слово IN, например:

CAT.subcatID IN(5,136)

для замены двух AND.

1 голос
/ 13 апреля 2011

SubcatID не может быть 5 и 136, в то время как вы должны использовать ИЛИ вместо AND.

Измените его и попробуйте

ON CAT.busID = R.id AND 
(CAT.subcatID = 5 OR CAT.subcatID = 136) 
AND CAT.deleted = 0";

ИЛИ вы можете сделать его коротким, используя IN

 ON CAT.busID = R.id AND 
 CAT.subcatID IN ('5','136') 
    AND CAT.deleted = 0";
0 голосов
/ 13 апреля 2011

Нельзя применять условие AND, когда вы приравниваете один и тот же столбец к двум различным значениям. Используйте условие ИЛИ.

Измените $ sqlCatC следующим образом:

$sqlCatC = "INNER JOIN yt_att_data CAT  ON CAT.busID = R.id AND (CAT.subcatID = 5 OR CAT.subcatID = 136) AND CAT.deleted = 0";
...