@TANK_IST

Как составить такой sql запрос с двух страниц?

Есть две таблицы, в одной список с параметрами, во второй список со значениями
5be0c5fd5f98b625437290.png5be0c60b98001335697088.png
Нужно сделать выборку по фильтру название = значение
фильтров может быть несколько
Составил такой запрос
SELECT P.post FROM fields_post AS P, fields AS F
WHERE (P.value = 'Medium' AND F.name = 'Size')
AND (P.value = 'Purebred' AND F.name = 'Type')
AND P.field = F.id

Но он не работает с несколькими фильтрами.
Как его переписать чтобы выборка работала?
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Не совсем понятно что именно вы делаете, но возможно вы хотели что-то такое:
SELECT P.post FROM fields_post AS P, fields AS F
WHERE P.field = F.id
AND (
  (P.value = 'Medium' AND F.name = 'Size')
  OR -- это важно
  (P.value = 'Purebred' AND F.name = 'Type')
)


Или как вы хотите чтобы он работал, если у вас P.value = 'Medium' and P.value = 'Purebred' одновременно?
Ответ написан
@nrv
1) Личное ощущения: не джойните, пожалуйста таблице в where. Если вы их джойните, пишете нормальный джойн ( типа t1 join t2 on t1.col = t2.col). Практика показывает, что те кто сопоставляет таблицы в where, не понимают, что они делают.
2) Инфы недостаточно. Вы уверены что джойнить нужно по P.field = F.id? Нужно нормальное описание, что из себя таблицы представляют.
3) Несколько условий - это что? И по первому чтобы вышло (запись(и) 'Medium' + 'Size') и по второму (запись(и) 'Purebred' + 'Type') одновременно? Тогда ((P.value = 'Medium' AND F.name = 'Size')
or (P.value = 'Purebred' AND F.name = 'Type'))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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