Когда я выполняю эти запросы отдельно, я получаю результаты ниже $sql1->first
2 колонки, $sql2->second
2 колонны:Mysql Query, сравнивающие таблицы reseults
$userid='AD0004';
$comp_code='AD';
$sql1 = "SELECT DISTINCT CCCOMPANY, CCCNTY
FROM D.TMTBCNTC
WHERE CCCOMPANY='$comp_code'";
// //gets USER & their counties
$sql2 = "SELECT DISTINCT UCCOMPANY, UCCNTY
FROM D.TMTBCNTU
WHERE UCUSERID='$userid'
AND UCCOMPANY='$comp_code'";
CCCOMPANY CCCNTY UCCNTY UCCOMPANY
AD AT
AD BB BB AD
AD BE BE AD
AD BR BR AD
AD CM CM AD
AD CO CO AD
AD DE DE AD
AD EB EB AD
AD EP EP AD
AD FB FB AD
AD GB
AD GU GU AD
AD GV GV AD
AD HA HA AD
AD KF KF AD
AD KN KN AD
AD MB MB AD
AD MG MG AD
AD PF PF AD
AD TA TA AD
AD UB UB AD
AD WI WI AD
То, что я хочу сделать, это присоединиться столбцы CCCOMPANY=UCCOMPANY && CCCNTY=UCCNTY
, а также вернуть пустые поля, когда нет совпадения.
Проблема, с которой я сталкиваюсь, заключается в том, что запрос, кажется, проходит через себя, что означает, что я получаю 22 округа для каждой компании и 20 стран на пользователя, что получается до 20x22 => 440 результатов, я хочу 22 результата и один запрос.
edit1:
$sql = "
SELECT DISTINCT c_t.CCCOMPANY, c_t.CCCNTY, (
CASE WHEN u_t.UCUSERID='$userid'
THEN 'exists here'
END
) AS UserOnSite
FROM D.TMTBCNTC as c_t
LEFT JOIN D.TMTBCNTU AS u_t ON u_t.UCCOMPANY = c_t.CCCOMPANY
WHERE c_t.CCCOMPANY = '$comp_code'";
Выход:
AD | AT |
AD | BB |
AD | BE |
AD | BR |
AD | CM |
AD | CO |
AD | DE |
AD | EB |
AD | EP |
AD | FB |
AD | GB |
AD | GU |
AD | GV |
AD | HA |
AD | KF |
AD | KN |
AD | MB |
AD | MG |
AD | PF |
AD | TA |
AD | UB |
AD | WI |
AD | AT | exists here
AD | BB | exists here
AD | BE | exists here
AD | BR | exists here
AD | CM | exists here
AD | CO | exists here
AD | DE | exists here
AD | EB | exists here
AD | EP | exists here
AD | FB | exists here
AD | GB | exists here
AD | GU | exists here
AD | GV | exists here
AD | HA | exists here
AD | KF | exists here
AD | KN | exists here
AD | MB | exists here
AD | MG | exists here
AD | PF | exists here
AD | TA | exists here
AD | UB | exists here
AD | WI | exists here
EDIT2:
$sql = "
SELECT DISTINCT c_t.CCCOMPANY, c_t.CCCNTY, (
CASE WHEN u_t.UCUSERID='$userid'
THEN 'exists here'
END
) AS UserOnSite
FROM D.TMTBCNTC as c_t
LEFT JOIN D.TMTBCNTU
AS u_t
ON u_t.UCCOMPANY = c_t.CCCOMPANY
WHERE c_t.CCCOMPANY = '$comp_code'
AND u_t.UCCNTY = c_t.CCCNTY";
AD | AT |
AD | BB | exists here
AD | BB |
AD | BE | exists here
AD | BE |
AD | BR | exists here
AD | BR |
AD | CM | exists here
AD | CM |
AD | CO | exists here
AD | CO |
AD | DE | exists here
AD | DE |
AD | EB | exists here
AD | EB |
AD | EP | exists here
AD | EP |
AD | FB | exists here
AD | FB |
AD | GB |
AD | GU | exists here
AD | GU |
AD | GV | exists here
AD | GV |
AD | HA | exists here
AD | HA |
AD | KF | exists here
AD | KF |
AD | KN | exists here
AD | KN |
AD | MB | exists here
AD | MB |
AD | MG | exists here
AD | MG |
AD | PF | exists here
AD | PF |
AD | TA | exists here
AD | TA |
AD | UB | exists here
AD | UB |
AD | WI | exists here
AD | WI |
второй результат не плохой, не знаю, почему ваш сервер кидает 2 Рез ным, если пользователь существует ... –
Я предполагаю, что его из-за его iSeries –