Я застрял на запрос с объединением. На сайте клиента работает mysql4, поэтому подзапрос не вариант. Мои попытки переписать с помощью объединения не увенчались успехом.
Мне нужно выбрать всех подрядчиков, перечисленных в таблице подрядчиков, которых нет в таблице contractors2label, с указанным идентификатором ярлыка и идентификатором округа. Тем не менее, они могут быть перечислены в
Contractors2label с другими идентификаторами лейблов и округов.
Таблица: подрядчики
cID (основной, автономный номер)
компания (варчар)
... и т.д ...
Таблица: подрядчики2label
ИДС
labelID
countyID
PSID
Этот запрос с подзапросом работает:
SELECT company, contractors.cID
FROM contractors
WHERE contractors.complete = 1
AND contractors.archived = 0
AND contractors.cID NOT IN (
SELECT contractors2label.cID FROM contractors2label
WHERE labelID <> 1 AND countyID <> 1
)
Я думал, что этот запрос с объединением будет эквивалентен, но он не возвращает результатов. Ручное сканирование данных показывает, что я должен получить 34 строки, что и возвращает подзапрос, приведенный выше.
SELECT company, contractors.cID
FROM contractors
LEFT OUTER JOIN contractors2label ON contractors.cID = contractors2label.cID
WHERE contractors.complete = 1
AND contractors.archived = 0
AND contractors2label.labelID <> 1
AND contractors2label.countyID <> 1
AND contractors2label.cID IS NULL