Оптимизировать запрос - 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")

Объяснение кода листинга программы

  1. SELECT table1.* FROM table1 - выбираем все поля из таблицы table1
  2. WHERE EXISTS (SELECT 1 FROM table3_1 WHERE table3_1.id = table1.id AND table3_1.value = value) - условие, что существует запись в таблице table3_1, где id равен id из таблицы table1 и значение равно value
  3. AND EXISTS(SELECT 1 FROM table3_2 WHERE table3_2.id = table1.id AND table3_2.value = value) - условие, что существует запись в таблице table3_2, где id равен id из таблицы table1 и значение равно value

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5