Здравствуйте. Не могу придумать как получить данные, которые мне нужны из БД одним запросом. У меня есть две таблицы: Код (Text): TABLE statuses (ID, STATUS) 1 1 3 2 5 1 TABLE products (ID, NAME, ...) 1 product_1 2 product_2 3 product_3 4 product_4 5 product_5 ID таблицы statuses и ID таблицы products связаны. Мне нужно выбрать все ID таблицы products, для которых в таблице statuses значение STATUS <> 2, а также все ID таблицы products, для которых в таблице statuses вообще нет записей. Мой запрос следующий: Код (Text): SELECT products.ID FROM products, statuses WHERE statuses.STATUS <> 2 AND statuses.ID = products.ID Этот запрос возвращает только те ID, для которых существуют строки в таблице statuses, исключая ситуации, когда STATUS = 2. Как изменить запрос так, чтобы те ID таблицы products, для которых в таблице statuses вообще нет строк тоже попадали в результат запроса? Заранее спасибо за помощь!
Такое разделение на две таблицы обычно делают, когда для одной записи из таблицы products может быть произвольное количество записей в таблице statuses. То есть одному продукту может быть присвоено одновременно несколько статусов. А в твоём случае, похоже, что одному продукту присваивается один статус. То есть одной записи из первой таблицы может соответствовать только одна запись из второй. В таком случае во второй таблице (имхо) нет никакого смысла. Абсолютно. Просто запихай статусы в первую таблицу и упрости себе жизнь.
На самом деле у меня таблица statuses намного обширнее, чем я её описал, и она необходима, т. к. в ней действительно есть связи многие ко многим с таблицей products. Но мне нужно найти решение для описанного мной примера. В том случае, который предложили вы, я конечно же не стал бы использовать отдельную таблицу.