Получить товары для определенного города?
Всем привет!
есть таблица, product_cities
поля:
-product_id (связь с товаром из таблицы products )
-city_id ( связь с городом из таблицы cities)
-can_be_sold (можно продавать только для данного города , для остальных городов не продается)
-can_not_be_sold (не продается для данного города, для остальных городов продается)
При выборке нужно учесть три условия:
1. если для данного товара нет записей в этой таблице - то выводим
2. если есть запись для данного товара и city_id и can_be_sold = 1 то выводим
3. если есть запись для данного товара и city_id НО can_not_be_sold = 1 то УЖЕ НЕ ВЫВОДИМ.
Вот никак не могу учесть все три условия в одном SQL запросе. Есть какие идеи?
Дополнительно:
Переведите в синтаксис SQL эти три условия хотя бы по отдельности, тогда можно говорить, что вы пытались найти решение.
Ответы:
Решение, может кому то поможет
В моем случае названия таблиц отличается от тех что в вопросе.
------
SELECT master_products.id,master_products.name,master_product_regions.master_product_id AS mpr_id FROM master_products JOIN master_product_categories on master_products.id=master_product_categories.master_product_id LEFT JOIN master_product_regions ON master_products.id=master_product_regions.master_product_id WHERE master_product_categories.category_id=803 AND ( master_product_regions.id is NULL OR (master_product_regions.city_id = ".$city." AND master_product_regions.can_be_sold = 1) OR (master_product_regions.city_id != ".$city." AND master_product_regions.can_not_be_sold=1) ) |
SELECT master_products.id,master_products.name,master_product_regions.master_product_id AS mpr_id FROM master_products JOIN master_product_categories on master_products.id=master_product_categories.master_product_id LEFT JOIN master_product_regions ON master_products.id=master_product_regions.master_product_id WHERE master_product_categories.category_id=803 AND ( master_product_regions.id is NULL OR (master_product_regions.city_id = ".$city." AND master_product_regions.can_be_sold = 1) OR (master_product_regions.city_id != ".$city." AND master_product_regions.can_not_be_sold=1) )
- Код следует обернуть тегом code для корректного отображения.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для получения товаров для определенного города вам необходимо выполнить следующие шаги:
1. Создайте базу данных, которая будет содержать информацию о товарах и городах, для которых они доступны. В таблице товаров добавьте столбец "city_id", который будет ссылаться на таблицу городов.
2. Заполните таблицу городов информацией о доступных городах, присвоив каждому городу уникальный идентификатор.
3. Добавьте данные о товарах, указав в столбце "city_id" идентификатор города, для которого товар доступен.
4. Напишите SQL-запрос, который будет выбирать все товары для определенного города. Для этого используйте JOIN, чтобы объединить таблицы товаров и городов по столбцу "city_id" и добавьте условие WHERE, чтобы выбрать только товары для определенного города.
Пример SQL-запроса для получения товаров для города с идентификатором 1 (например, Москва) в PHP:
SELECT * FROM products JOIN cities ON products.city_id = cities.id WHERE cities.id = 1;
Этот запрос выберет все товары, доступные для города с идентификатором 1. Вы можете изменить значение 1 на любой другой идентификатор города, чтобы получить товары для другого города.
Надеюсь, это поможет вам решить вашу проблему! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.