Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.207.133.13] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Добрый день!
Подскажите пожалуйста, как можно на основе связующих таблиц "colors_products" и "models_products" выбрать из таблицы "products" например все "iPhone SE", и например чёрного цвета? Справочник цветов, таблица "colors": 1. White 2. Black 3. Red Справочник моделей, таблица "models": 1. iPhone SE 2. iPhone 14 3. iPad Air Таблица содержащая все продукты "products": 1. iPhone SE, Black 2. iPad Air, Black 3. iPhone SE, Red 4. iPhone 14, Black Таблица "colors_products" содержит связи между "color_id <--> product_id" Таблица "models_products" содержит связи между "model_id <--> product_id" |
Сообщ.
#2
,
|
|
|
select products.* from products join colors_products on colors_products.product_id = products.product_id join models_products on models_products.product_id = products.product_id join colors on colors.color_id = colors_products.color_id join models on models.model_id = models_products.model_id where colors.color_name='Black' and models.model_name='iPhone SE' Вот такой запрос даст тот же результат, но отработает чутка быстрее: select products.* from products join colors_products on colors_products.product_id = products.product_id join models_products on models_products.product_id = products.product_id join colors on colors.color_id = colors_products.color_id and colors.color_name = 'Black' join models on models.model_id = models_products.model_id and model_name = 'iPhone SE'; |
Сообщ.
#3
,
|
|
|
Спасибо огромное Вам за помощь!
Когда я писал, выбрать все "iPhone SE", и например чёрного цвета, имелось ввиду в запросе использовать эти условия не словами, а с помощью ID's этих условий. Например "iPhone SE" имеет "model_id = 1" в таблице "models", а чёрный цвет имеет "color_id = 2" в таблице "colors". Видимо вот так: SELECT products.product_id, products.product_description FROM products JOIN colors_products ON colors_products.product_id = products.product_id AND colors_products.color_id = 2 JOIN models_products ON models_products.product_id = products.product_id AND models_products.model_id = 1 |
Сообщ.
#4
,
|
|
|
Цитата iPhonesoft @ Видимо вот так: Да, все верно. |
Сообщ.
#5
,
|
|
|
Спасибо Вам огромное за помощь!
|