23. februar 2006 - 13:57Der er
4 kommentarer og 1 løsning
Kategorier med parent id og tilhørende spørgsmål
Hejsa alle
Jeg prøver at få hentet en række spørgsmål ud, for hver kategori jeg har i en tabel:
CREATE TABLE [dbo].[Category]( [ID] [int] IDENTITY(1,1) NOT NULL, [parent_id] [int] NULL, [name] [varchar(100)] NOT NULL )
CREATE TABLE [dbo].[ValuePerformQuestion]( [ID] [int] IDENTITY(1,1) NOT NULL, [category_id] [int] NOT NULL, [question] [text] NOT NULL )
Jeg prøver så at hente det ud sådan her: SELECT Category.id as category_id, Category.name AS category_name, SubCategory.id AS subcategory_id, SubCategory.name AS subcategory_name, SubSubCategory.id AS subsubcategory_id, SubSubCategory.name AS subcategory_name, Question.id AS question_id, Question.question AS question_text FROM Category LEFT JOIN Category AS SubCategory ON SubCategory.parent_id = Category.id LEFT JOIN Category AS SubSubCategory ON SubSubCategory.parent_id = SubCategory.id LEFT JOIN Question ON (Question.category_id = Category.id OR Question.category_id = SubCategory.id OR Question.category_id = SubSubCategory.id) WHERE Category.parent_id IS NULL ORDER BY question_id;
Men synes ikke jeg får det rigtige resultat ud. Mit problem ligger nok i LEFT JOIN Question ON ..., hvor jeg ikke er helt sikker på det er opstillet korrekt.
Når der er oprettet spørgsmål til hver kategori niveau, kommer spørgsmålene på "hovedkategori" niveau ud flere gange...
Der er "kun" de 3 niveauer: "Hovedkategori", "underkategori" og "underunderkategori...
Du skal ikke joine dine kategorier med left join, så vidt jeg lige kan gennemskue kan du gøre som nedestående
SELECT Category.id as category_id, Category.name AS category_name, SubCategory.id AS subcategory_id, SubCategory.name AS subcategory_name, SubSubCategory.id AS subsubcategory_id, SubSubCategory.name AS subcategory_name, Question.id AS question_id, Question.question AS question_text FROM Category INNER JOIN Category AS SubCategory ON SubCategory.parent_id = Category.id INNER JOIN Category AS SubSubCategory ON SubSubCategory.parent_id = SubCategory.id RIGHT JOIN ValuePerformQuestion As Question ON (Question.category_id = Category.id OR Question.category_id = SubCategory.id OR Question.category_id = SubSubCategory.id) WHERE Category.parent_id IS NULL ORDER BY question_id;
Nå, så må jeg jo selv svare :) Skriv hvis du vil have pointene, men vil lukke spørgsmålet
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.