Интересно, может ли кто-нибудь помочь мне с запросом MySQL (v5.0.51), с которым у меня возникают проблемы. У меня есть таблица вроде этого:Помощь с MySQL Query
category_id | category_text | subcategory
25 | Motor Controls | NULL
26 | Contactors | 25
27 | Overloads | 25
28 | Motors | NULL
29 | Accessories | 28
Каждой запись с NULL в подкатегории столбца представляет собой категорию верхнего уровня и значение в подкатегории говорят, к какой категории верхнего уровня подкатегория принадлежит.
В приведенном выше примере: Контакторов и Перегрузка принадлежит управлению двигателем, поскольку их соответствующая подкатегория имеет значение 25, которое является category_id (25) от двигателя управления
Теперь я использую эти значения в таблице PRODUCTS для хранения но здесь я ТОЛЬКО храню category_id подкатегории.
product_id | product_item | product_supplier_id | product_description | product_category_id
24 | Product A | 39 | Product A description | 27 --category_id of subcategory (ie.Overloads)
25 | Product B | 39 | Product B description | 26 --(Contactors)
Проблема, которую я имею, что мне нужно один SQL запрос, где я могу запросить таблицу PRODUCTS (среди других) и довести до ОБА категории и подкатегории. Я могу сделать это для того или другого, но не для обоих. Я попробовал UNION, JOINS и т. Д., Но просто не могу понять. Это то, что у меня есть до сих пор, которое просто воспитывает подкатегорию.
SELECT p.*, c.company_name, pc.category_text AS subcategory
FROM products p, company c, product_categories pc
WHERE p.product_supplier_id = c.company_id
AND p.product_category_id = pc.category_id
Это приводит к запросу, генерирующему результат ниже.
product_id | product_item | product_supplier_id | product_description | product_category_id | company_name | subcategory
24 | Product A | 39 | Product A description | 27 | Product A Supplier | Overloads
25 | Product B | 39 | Product B description | 26 | Product B Supplier | Contactors
В основном то, что я хочу, чтобы добавить столбец, который содержит правильную категорию верхнего уровня для каждой подкатегории, так это выглядит, как этот
24 | Product A | 39 | Product A description | 27 | Product A Supplier | **Motor Controls** | Overloads
Могу ли я сделать это с тем, как создается таблица или мне нужно его изменить?
Извините, у меня было несколько хороших изображений, чтобы было легче понять, но с «репутацией» 1, я не мог опубликовать его.
Любая помощь будет оценена по достоинству. Обратите внимание, что я использую запрос в PHP для доступа к базе данных MySQL.
Благодаря
Спасибо! Это сработало отлично. Я предполагаю, что я делал это более сложным, чем нужно ... хотя все говорят, что, когда они будут представлены с правильным решением? Еще раз спасибо! – user558720