Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток.
Сижу над запросом и уже походу мозг начинает тупить.
Есть две таблицы — таблица `p` со статьями и `pt` с метками. К каждой статье идет много меток в таблице `pt` связаны они по ключу `id_p` в каждой таблице.
Таблци `p`:
SELECT * FROM `p`
Результат:
id_p | p_title
________________
1 | статья 1
2 | статья 2
3 | статья 3
4 | статья 4
.....
262 | статья 262
Таблица `pt:
SELECT * FROM `pt` WHERE `id_p` = 262
Результат:
id_pt | id_p | pt_val
_______________
7403 | 262 | 556
7402 | 262 | 535
7401 | 262 | 4448
7400 | 262 | 4447
7399 | 262 | 4445
Вопрос. Как записать условие WHERE что бы при выборе с таблицы `p` выбирались все записи с метками 4447 и 4448, но не с 556 и 535?
Я делаю:
SELECT * FROM `p`
INNER JOIN `pt`
WHERE `id_p` = 262 AND `pt_val` = 4447 AND `pt_val` = 4448
Результата ноль строк. Но если делать через OR то получается две записи с соответствующими метками:
SELECT * FROM `p`
INNER JOIN `pt`
WHERE `id_p` = 262 AND (`pt_val` = 4447 OR `pt_val` = 4448)
Нужно получить один. Но при большом количестве записей в таблице `p` и меток в `pt` в результат попадают записи с `p` которые там не должно быть
Неактивен
Попробуйте
Неактивен