Запрос из двух столбцов, реально ли? - MySQL
Формулировка задачи:
Есть два столбца, допустим id_object и id_service
примерно так:
Нужно вот что: выбрать все строки, в которых значение id_service = 1 или 5, но не просто 1 или 5, а чтобы эти значения были связаны со столбцом id_object
т.е. чтобы выводилось вот так
если id_object=1, то проверить есть ли у него значение 1 и 5 одновременно у id_service. если да, то выводить, если нет, то не нужно. допустим, если есть значение 1, но нет значения 5, то выводить не нужно
id_object id_service 1 1 1 5 5 1 7 2
id_object id_service 1 1 1 5 2 1 2 5
Решение задачи: «Запрос из двух столбцов, реально ли?»
textual
Листинг программы
SELECT t.* FROM mytable t JOIN mytable t1 ON t.id_object = t1.id_object AND t1.id_service = 1 JOIN mytable t5 ON t1.id_object = t5.id_object AND t5.id_service = 5
Объяснение кода листинга программы
В представленном коде выполняется запрос к таблице mytable с условием объединения по двум столбцам: id_object и id_service. При этом, для объединения используются таблицы t1 и t5. Значения переменных, которые соответствуют идентификаторам объектов и услуг, равны 1 и 5 соответственно.
Список элементов кода:
- SELECT t.* - выбор всех столбцов из таблицы
mytableс псевдонимомt. - FROM mytable t - указание источника данных (таблицы
mytable). - JOIN mytable t1 ON - условие объединения по двум столбцам:
id_objectиid_service. - AND t1.id_service = 1 - добавление условия объединения по столбцу
id_serviceсо значением 1. - JOIN mytable t5 ON - условие объединения по двум столбцам:
id_objectиid_service. - AND t5.id_service = 5 - добавление условия объединения по столбцу
id_serviceсо значением 5. Таким образом, в результате выполнения запроса будет получена выборка данных из таблицыmytable, в которой будут учтены указанные условия объединения по столбцамid_objectиid_service.