@filippovanatoliy
Вот начал погружаться в кодинг)

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

привет, опять я долблюсь с выборкой.
Мой засаленный мозг говорит подключить питон, бахнуть две отдельные функции и построчно смотреть таблицу, но так не работает, это нужно сделать выборкой.

Имеется две таблицы,
goods [ ID | CATEGORY ID | SALON_ID ] -  соответственно товар, категория и салон
и goods_categories [ ID | PID | SALON_ID ] - ид категории, ид родительской категории и салон

товар может лежать в такой вложенности (родительской категории может и не быть, если category_id на самом верхнем уровне):
PID > CATEGORY_ID > ID

И вот самое интересное. Мне надо сделать выборку товаров, у которых категория (CATEGORY_ID) принадлежит другому салону или родительская категория (PID) принадлежит другому салону.

Как я это вижу.

Есть такая запись в goods:
[ ID | CATEGORY ID | SALON_ID ]
[ 1 | 111 | 123 ]

но по category_id в good_categories выходит
[ ID | PID | SALON_ID ]
[ 111 | Null | 100 ]

то есть goods.salon_id <> goods_categories.salon_id

Класс, вроде все просто. Написал вот такой запрос,

SELECT g.id as 'GOOD ID', g.category_id as 'CAT ID from GOODS',
       gc.id as 'CAT ID FROM G_CAT', g.salon_id as 'Goods Salon_id',
       gc.salon_id as 'G_CAT Salon_id', gc.pid as "PID"
FROM goods g

inner join goods_categories gc on g.category_id = gc.id
         where g.salon_id <> gc.salon_id


он мне даже два таких товара нашел,
1ba348d27d.jpg
вроде бы половина пути к победе, но мне кажется это, во-первых, неправильно (больно мало строк), а во вторых, как мне сюда еще проверку на PID сделать?
еще раз заджойнить таблицу и связать по pid? inner join goods_categories gc2 on gc2.pid = gc.id
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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