SQL: Join af tabeller

Tags:    mssql sql join asp.net csharp

Kære udviklere,

Jeg er igang med et skoleprojekt hvor vi skal lave et forum. Det meste er allerede lavet, men er stødt ind i et problem.

Jeg har langt om længe fået min Group By-del til at fungere, ved at bruge en left join hvor jeg henter specifikke dele fra en anden tabel.

Nu skal jeg så joine den samme tabel som jeg har gjort før - jeg skal bare have noget andet ud.

Nuværende eksempel:

Kategorioversigt
Fold kodeboks ind/udKode 


Ved "Antal" får jeg udskrevet antallet af tråde som tilhører den kategori jeg får udskrevet. Dette gør jeg således:

Fold kodeboks ind/udSQL kode 


Det fungerer rigtig godt. Men jeg skal også have udskrevet datoen for den senest oprettede tråd i den kategori. Det kan jeg også godt, men så gruperer den ikke kategorien med Group By. Så bliver der udskrevet den samme kategori flere gange (afhængig af hvor mange tråde der eksisterer under den kategori).

Nuværende look: http://imgur.com/9YCBL

Jeg vil gerne have det til at se således ud: http://imgur.com/SQYDL

Håber at I kan hjælpe mig. Hvis der er spørgsmål, så spørg endelig!


P.S. Jeg bruger Repeater, så kan ikke smide det ind fra en while-løkke i .cs filen uden at skulle bruge findcontrol. Vil hellere bruge SQL.



Indlæg senest redigeret d. 11.09.2012 09:39 af Bruger #16025
3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
Problemet er at for at have de data i din tabel skal de beregnes, det betyder også at de ikke hører til der (normaliseringsmæssigt) - og det er også det du har gjort - dvs. de er i deres egen tabel. Du kan sagtens joine hver gang og så hente dem ud som du er ved at gøre - men du vil få flere problemer hen ad vejen efterhånden som du skal have flere og flere info på din oversigt.

For mig at se er der tre muligheder.

1: gå denormaliseringsvejen helt ud og lav kolonner til antal og sidst-opdateret, og hold dem så opdateret når du indsætter i din database. Dette er en manuel process

2: Det samme som den ovenstående, blot med en trigger på "insert" på din "indlæg" tabel, hvor triggeren så opdaterer dine kolonner med tællere og dato. Det hele sker automatisk

3: Lav mere end een forespørgsel. Det vil sige at når du skal lave din oversigt, laver du en løkke som helter kategorier ud, og for hver kategori kan du så kalde databasen igen og hente antal, last update ud osv.



Tak for svaret. Jeg tror bare jeg undlader at joine tabellerne. Jeg bruger bare et alternativ. Tak for hjælpen :).



Hej Daniele - kan du ikke blot bruge max() og så vælge datoen på den måde fra den inderste select?

Altså SELECT Traade.FK_KategorierId, COUNT(*) AS Cnt, MAX(datofeltet)



t