Оптимизировать запрос - MySQL (220464)
Формулировка задачи:
Есть 3 таблицы
table1 (id, name)
table2_1 (table1_id, table3_1_id)
table3_1 (id, value)
table2_2 (table1_id, table3_2_id)
table3_2 (id, value)
нужно выбрать из table1 все записи, для которых в таблице table3_1 и table3_2 существуют записи, у которых
value = "value"
Помогите написать, у меня больно большой получается и не работает)))
SELECT table1 .* FROM table1 LEFT JOIN table2_1 ON table2_1.table1_id = table1 .id LEFT JOIN table2_2 ON table2_2.table1_id = table1 .id LEFT JOIN table3_1 ON table3_1 .Id = table2_1.table3_1_id LEFT JOIN table3_2 ON table3_2 .Id = table2_2.table3_2_id WHERE table3_2.Value = "value" AND table3_1.Value = "value"
Решение задачи: «Оптимизировать запрос»
textual
Листинг программы
SELECT table1.* FROM table1 WHERE EXISTS (SELECT 1 FROM table3_1 WHERE table3_1.id = table1.id AND table3_1.value = "value") AND EXISTS(SELECT 1 FROM table3_2 WHERE table3_2.id = table1.id AND table3_2.value = "value")
Объяснение кода листинга программы
- SELECT table1.* FROM table1 - выбираем все поля из таблицы table1
- WHERE EXISTS (SELECT 1 FROM table3_1 WHERE table3_1.id = table1.id AND table3_1.value =
value
) - условие, что существует запись в таблице table3_1, где id равен id из таблицы table1 и значение равноvalue
- AND EXISTS(SELECT 1 FROM table3_2 WHERE table3_2.id = table1.id AND table3_2.value =
value
) - условие, что существует запись в таблице table3_2, где id равен id из таблицы table1 и значение равноvalue
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д