2012-02-05 4 views
0

Я пытаюсь просто выбрать данные из агентства таблиц, где это агентство имеет запись в таблице комиссии с определенным носителем. Мой SQL-запрос возвращает все записи и 3 раза. Что я делаю не так.MySQL Left Join Not Working

$allquery = mysql_query("SELECT agency.ID, agency.agencyname, agency.contdate, agency.physcity FROM agency LEFT JOIN commission ON commission.repnum = agency.repid WHERE agency.repid = '$repid' AND commission.repnum = '$repid' AND commission.carrier = 'Carrier' ")or die(mysql_error()) 

ответ

4

Вы не присоединяетесь к двум таблицам, если только вы не указали критерии объединения, содержащие столбцы из каждой таблицы.

SELECT agency.ID, agency.agencyname, agency.contdate, agency.physcity 
FROM agency LEFT JOIN commission ON commision.repid = agency.repid AND commission.carrier = 'Carrier' 
+0

Спасибо за это, я не знаю, что я делаю, я редактировал выше, и его до сих пор извлечения всех записей и 3 раза каждый. Это похоже на игнорирование моего предложения WHERE. Пробовал левое и внутреннее соединение. – savagenoob

+0

Nevermind. Я понял. Необходимо сделать комиссию ON.agencyid = agency.ID. Я устал. +1 – savagenoob

+0

Но вам нет причин указывать AND Commission.repnum = '$ repid'. Поскольку неясно, какова ваша структура или данные таблицы, мы можем только догадываться об этом. При этом левое внешнее соединение возвращает все строки. Свойство левого соединения состоит в том, что вы получите строку для каждой строки в левой таблице, которая находится в таблице слева от предложения LEFT JOIN. В этом случае это агентство. Независимо от того, можно ли найти подходящую строку в команде, вы получите строку. – gview

0

В: Почему бы вам не использовать внутреннее соединение, если вы хотите сослаться на элементы в «комиссии»?

Вопрос: Почему вы вообще присоединяетесь ??? Я не вижу, как «комиссия» связана с «агентством». Также есть «комиссия» с полем «repid»?

Во всяком случае, на основании того, что вы показали, я бы рекомендовал это:

SELECT ID, agencyname, contdate, physcity 
FROM agency 
where repid = '$repid'