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

Как грамотно составить запрос на выборку из двух таблиц?

Есть две таблицы:
1. Obj:
id | title | id_category
1 | a1 | 1
2 | a2 | 2
3 | a3 | 2
4 | a4 | 3
5 | a5 | 3
6 | a6 | 3
7 | a7 | 4
8 | a8 | 4
9 | a9 | 4
10 | a10 | 4

2. Category:
id | type | id_user
1 | 1 | 2
2 | 1 | 3
3 | 2 | 2
4 | 2 | 3

Нужно выбрать все объекты определенной категории что-бы Category.type<>2, а если тип категории ровно 2, то Category.id_user=пользователь который делает выборку, к примеру 2

В итоге должно получится:
id_user=1 и id_category=2 [выборка] a2, a3;
id_user=2 и id_category=3 [выборка] a4, a5, a6;
id_user=2 и id_category=4 [выборка] нет записей;
id_user=3 и id_category=4 [выборка] a7, a8, a9, a10;
id_user=3 и id_category=1 [выборка] a1;

Вот пример неверного запроса:
SELECT DISTINCT Obj.*
FROM objects Obj
JOIN category Cat
ON Cat.type<>2 OR Cat.id_user=2
WHERE Obj.id_category=4
  • Вопрос задан
  • 2296 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
GM2mars
@GM2mars Автор вопроса
Внимание правильный ответ ))
SELECT Obj.*
FROM category Cat
JOIN object Obj
ON Obj.id_category=Cat.id 
	AND (Cat.type<>2 OR Cat.id_user=3)
WHERE Cat.id=4
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Условия выборки из ON перенесите во WHERE, а в ON укажите условие связи таблиц `Cat`.`id` = `Obj`.`id_category`
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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