Vinnaren i pepparkakshustävlingen!
2009-06-21, 15:17
  #1
Medlem
erty2s avatar
Tjenare, har lite problem med en query jag inte riktigt får till.
Jag har en tabell som heter categorys. Den här tabellen är tänkt att innehålla alla kategorier och underkategorier till produkter i min databas. Såhär ser strukturen ut:

Kod:
+------------+----------------------+-----------------+
categoryID category             isSubcategoryTo |
+------------+----------------------+-----------------+
|      
1     Kategori 1           |        NULL     
|      
2     Subkategori 1        |           1     
|      
3     Subkategori 2        |           1     
|      
4     Subkategori 3        |           1     
|      
5     Kategori 2           |        NULL     
|      
4     Subkategori 1        |           5     
+------------+----------------------+-----------------+ 

Här ser man att jag har två huvudkategorier. Kategori 1 har tre underkategorier som har till categoryID 1 för att visa att de är underkategorier. Hoppas ni förstår tänket.

Låt oss nu säga att jag har en tabell med produkter, typ:

Kod:
--------------------------------------------
produktID Produktnamn kategoriID
--------------------------------------------
    
1       Produkt 1         4 

Finns det någon fin query jag kan använda mig av för att visa vilka kategorier och underkategorier en specifik vara ligger under? Hade varit fint att få svaret ungefär såhär:

Kod:
---------------------------------------------------------------------------------
produktID Produktnamn kategoriID Huvudkategori Subkategori 
---------------------------------------------------------------------------------
    
1       Produkt 1         4       Kategori 1     Subkategori 4 


Tack på förhand
Citera
2009-06-21, 18:15
  #2
Moderator
Protons avatar
Nånting sånt här?

Kod:
SELECT produktId,produktnamn,categoryId AS kategoriId,cat1.category AS Huvudkategori,cat2.category AS Subkategori 
FROM 
product 
INNER JOIN category cat1 ON cat1.categoryId = product.categoryId
LEFT JOIN category cat2 ON cat2.isSubcategoryTo = cat1.categoryId
WHERE isSubcategoryTo IS NOT NULL 

Nånting sånt?
Citera
2009-06-21, 18:15
  #3
Medlem
Hej,
pröva denna:
Kod:
SELECT P.ProduktID, P.ProduktNamn, C.CategoryID as KategoriID, C.Category as Huvudkategori, isNull(subC.Category, 'Ingen') as Subkategori
FROM Category C
LEFT OUTER JOIN Category subC ON subC.CategoryID = C.isSubcategoryTo
INNER JOIN Produkt P ON P.KategoriID = C.CategoryID -- Blanda Svenska och engelska?
Citera
2009-06-21, 20:29
  #4
Medlem
erty2s avatar
Efter lite krånglande och pillrande fick jag det att funka finfint med en småfixad variant av Proton's lösning (mest för att passa min riktiga miljö). Tack kfluffie och Proton för hjälpen
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback