Задать вопрос
@lemonlimelike

Почему не работает запрос?

Почему этот запрос не работает так как нужно
SELECT * 
FROM video
INNER JOIN category ON video.category1
OR video.category2 = category.id
WHERE video.id = 100


Запрос должен доставать видео у которых category1 и category2 совпадает с категорией видео у которого id=100, типа похожие видео
c342d039186b42d28604309cdc4ba6b0.jpgd0d84f1e34024eb3ac3ef4dd05536050.jpg
  • Вопрос задан
  • 210 просмотров
Подписаться 1 Оценить 3 комментария
Решения вопроса 1
rpsv
@rpsv
делай либо хорошо, либо никак
Найти видео, у которых совпадают категории:
SELECT * 
FROM video
INNER JOIN video AS video_main ON video.category1 = video_main.category1 AND video.category2 = video_main.category2
WHERE video_main.id = 100


Найти видео, у которых совпадает хотя бы одна категория:
SELECT * 
FROM video
INNER JOIN video AS video_main ON video.category1 = video_main.category1 OR video.category2 = video_main.category2
WHERE video_main.id = 100
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Immortal_pony
@Immortal_pony Куратор тега MySQL
Запрос должен доставать видео у которых category1 и category2 совпадает с категорией видео у которого id=100, типа похожие видео

Я не представляю, почему вы решили, что ваш запрос должен это делать.

Вот запрос, который будет это делать:
SELECT 
    `video`.*
FROM `video`
WHERE 
	(
		`video`.`category1` IN (SELECT category1 FROM  `video` WHERE `id`='1' UNION SELECT category2 FROM  `video` WHERE `id`='1')  
		OR `video`.`category2` IN (SELECT category1 FROM  `video` WHERE `id`='1' UNION SELECT category2 FROM  `video` WHERE `id`='1') 
	)
AND `video`.`id` != '1'
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы