Вложенные подзапросы к MySQL в 2 уровнях

Узнай цену своей работы

Формулировка задачи:

Получаю список строк по условию:
Листинг программы
  1. SELECT * FROM TABLE WHERE s=1 ORDER BY id
Затем нужно этот список строк обработать через такой запрос, таблица test должна содержать полученные в первом запросе строки:
Листинг программы
  1. SELECT id
  2. FROM test t1
  3. WHERE EXISTS
  4. (SELECT id
  5. FROM test t2
  6. WHERE t2.id IN (t1.id + 10, t1.id - 10))
перебрал уже с десяток вариантов, никак не состыкую...

Решение задачи: «Вложенные подзапросы к MySQL в 2 уровнях»

textual
Листинг программы
  1. SELECT CONCAT(a1.id,':(',a1.x,',',a1.y,')') v1, CONCAT(a2.id,':(',a2.x,',',a2.y,')') v2
  2. FROM   all_items_10x10 a1
  3. JOIN   all_items_10x10 a2 ON (a2.x=a1.x AND a2.y=a1.y+1 AND a2.s=0)
  4. WHERE  a1.s = 0

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

  1. В данном коде используется оператор SELECT для выбора данных из таблицы all_items_10x10.
  2. В выбранных полях указаны CONCAT(a1.id,':(',a1.x,',',a1.y,')') и CONCAT(a2.id,':(',a2.x,',',a2.y,')') - это функции CONCAT, которые объединяют значения полей id, x, y в одну строку с использованием разделителя ':('. Предполагается, что эти поля содержат числовые значения.
  3. Для соединения таблиц all_items_10x10 используется оператор JOIN с условием (a2.x=a1.x AND a2.y=a1.y+1 AND a2.s=0). Здесь мы соединяем таблицу all_items_10x10 по полю x и y с условием, что значение поля s у соединенной записи будет равно 0.
  4. В конце кода добавляется условие WHERE a1.s = 0, которое ограничивает выборку только теми записями, у которых значение поля s равно 0.
  5. В результате выполнения данного кода будет получена выборка из таблицы all_items_10x10, содержащая только два поля: v1 и v2, которые представляют собой строки, сформированные с использованием функций CONCAT.

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


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

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

10   голосов , оценка 3.9 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут