Выбор 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_%
, а также значениями Механическая
и Передний
соответственно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д