@Kirill-Gorelov
С ума с IT

Как написать SQL?

Короче, обложался я немного, теперь надо придумать костыль ... Переделать не представляется возможности в ближайшие некоторые месяцы.

Есть таблица
5e9d8883995b9398701905.png

И теперь мне надо сделать запрос, который отфильтрует eid по patronymic = Павлович и place_award = г.Коломна
И получается, если я сделаю запрос, то в вывод могут попасть и eid = 1 и eid = 18. А нужно, что бы было только eid = 1.
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@MaximaXXl
select eid
from t
where (key, value) in (('patronymic','Павлович'),('place_award','г.Коломна'))
group by eid
having count(eid) = 2
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
trapwalker
@trapwalker
Программист, энтузиаст
SELECT DISTINCT t1.eid
FROM
    t t1
    JOIN t t2 ON t2.eid = t1.eid AND t2.key = 'patronymic' AND t2.value='Павлович'
WHERE t1.key = 'place_award' AND t1.value = 'г.Коломна'

И научитесь уже предоставлять исходные примеры таблиц в виде SQL, чтоб отвечающие могли быстро и без труда потестировать свои решения, а не писать из головы.
Ответ написан
Комментировать
@101-s
можно задать лимит выборки

SELECT * FROM table WHERE patronymic = Павлович AND place_award = г.Коломна LIMIT 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы