Выбор id с условием - MySQL

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

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

+----------+---------------------------+---------------------+ | user_id | meta_key | meta_value | +----------+---------------------------+---------------------+ | 1 | korobka_peredach_10 | Автоматическая | | 2 | korobka_peredach_2_a | Механическая | | 1 | korobka_peredach_2_a | Автоматическая | | 1 | korobka_peredach_3_a | Механическая | | 2 | korobka_peredach_10 | Механическая | | 2 | privod_2_a | Передний | | 3 | privod_63 | Передний | | 3 | korobka_peredach_10 | Автоматическая | | 2 | privod_63 | Задний | | 1 | privod_2_a | Передний | | 1 | privod_63 | Задний | | 1 | privod_3_a | Передний | +----------+---------------------------+----------------------+ нужно из подобной таблицы выбрать user_id только тех пользователей у которых коробка передач Механическая и привод Передний получается строку с user_id 3 не должно выводить! есть вот такой неправильный запрос:
SELECT * FROM `wp_usermeta` WHERE (meta_key LIKE 'korobka_peredach_%' AND meta_value = 'Механическая') AND (meta_key LIKE 'privod_%' AND meta_value = 'Передний')

Решение задачи: «Выбор id с условием»

textual
Листинг программы
SELECT v.user_id FROM (
  SELECT user_id, 
  , SUM(CASE WHEN meta_key LIKE 'korobka_peredach_%' AND meta_value = 'Механическая' THEN 1 ELSE 0 END) cnt_korob
  , SUM(CASE WHEN meta_key LIKE 'privod_%' AND meta_value = 'Передний' THEN 1 ELSE 0 END) cnt_privod
  FROM `wp_usermeta`
  GROUP BY user_id
) v
WHERE v.cnt_korob > 0 AND v.cnt_privod > 0

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

В данном коде происходит выборка id пользователей из таблицы wp_usermeta, у которых есть записи в полях meta_key и meta_value с определенными условиями. Выполняется подсчет количества записей, удовлетворяющих этим условиям, и сохраняется в переменных cnt_korob и cnt_privod. Затем, происходит выборка пользователей, у которых оба этих количества больше нуля. Таким образом, в результате выполнения этого кода, будут получены id пользователей, у которых есть записи с ключами korobka_peredach_% и privod_%, а также значениями Механическая и Передний соответственно.

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


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

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

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