2016-11-05 13 views
5

Moja kategoria tabela wygląda tak:Jak wybrać wszystkie rekordy sub_category z jej nazwą_kategorii i identyfikatorem nadrzędnym w jednym zapytaniu w MySQL?

------------------------------------ 
id | name   | parent_id | 
------------------------------------ 
1 | Vehicles  | 0   | 
2 | Car Insurance | 1   | 
3 | Van Insurance | 1   | 
4 | PhoneRecharge | 0   | 
5 | prepaid  | 4   | 
6 | postpaid  | 4   | 

Wyjście powinno wyglądać następująco:

--------------------------------------------------------- 
id | parent_id | main_category_name | sub_category_name| 
--------------------------------------------------------- 
2 | 1  | Vehicles   | Car Insurance | 
3 | 1  | Vehicles   | Van Insurance | 
5 | 4  | PhoneRecharge | prepaid   | 
6 | 4  | PhoneRecharge | postpaid   | 

Aby uzyskać powyższy zapis, muszę zminimalizować mój interakcji z bazą danych. Muszę więc osiągnąć powyższe dane w jednym zapytaniu.

+0

Czy to tylko ja, czy nie pasują identyfikator użytkownika z jednej i siebie? Pokaż nam zapytanie, które wykonujesz, aby pobrać żądane dane. – Xorifelse

+0

WYBIERZ catg'id', cat'id', cat'name' jako 'main_cat_name', catg'name' jako' sub_catagory_name' FROM 'catagory' cat,' catagory' catg GDZIE kot' id' = catg .parent_id' użyj tego zapytania poniżej @Xorifelse – smondal345

Odpowiedz

2

To powinno działać:

SELECT 
    c.id AS cat_id, 
     parent.id AS parent_id, 
    parent.name AS main_category_name, 
    c.name AS sub_category_name 
FROM 
    category c JOIN category parent ON c.parent_id = parent.id