привет, опять я долблюсь с выборкой.
Мой засаленный мозг говорит подключить питон, бахнуть две отдельные функции и построчно смотреть таблицу, но так не работает, это нужно сделать выборкой.
Имеется две таблицы,
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
он мне даже два таких товара нашел,
вроде бы половина пути к победе, но мне кажется это, во-первых, неправильно (больно мало строк), а во вторых, как мне сюда еще проверку на PID сделать?
еще раз заджойнить таблицу и связать по pid? inner join goods_categories gc2 on gc2.pid = gc.id