følgende SQL-forespørgsel skal kunne udregne gennemsnittet af antal stjerner (CDCommentStars) + tælle antallet af kommentarer, men jeg kan ikke få det til at virke...
SELECT DISTINCT avg(tblCDComment.CDCommentStars) AS AvgStars, CountRows(tblComment) tblCD.*, tblCDCat.*, tblCDComment.*, FROM tblCD, tblCDCat, tblCDComment WHERE tblCD.CDCat = tblCDat.CDCatID AND tblCDComment.CDCommentCDID = tblCD.CDID ORDER BY CDTitle
tilføj en ORDER BY efter GROUP BY og de felter du skal have ud fra de øvrige tabeller. Eneste ulempe er, at du kun kan få de felter (kolonner) ud i "tekst" som du vælger at gruppere på eller benytte aggrerede funktioner på (AVG, MAX, MIN etc).
Der er ikke dubletter i en GROUP BY - der vil være forskel i en af de kolonner du grupperer på. At den kun viser de poster hvori der er comments kan hænge sammen med en inner join.
Du kan skrive din inner join om til en outer join for at få dine data ud. Nemmeste er at starte med at få en simpel select til at returnere de rækker du er interesseret i og efterfølgende skrive den om til en group by
step1:
select felt, felt, felt from tabel1 left outer join tabel2 on fk=pk
step2: select felt, felt, avg(felt), count(*) from tabel1 left outer join tabel2 on fk=pk group by felt, felt order by felt
Jeg tror det nemmeste bliver at lave en subselect (inline view) der beregner dine gennemsnit etc - og så benytte den i en almindelig join.
Således
select * from tblcd inner join (select cdid, avg(cdcommentstars) as stars, count(*) as antal from tblcd c left outer join tblcdcomment t on cdid = cdcommentcdid group by cdid) as rating on tblcd.cdid = rating.cdid inner join tblcat on tblcd.cdcat = tblcat.cdcatid order by tblcd.cdtitle
select * from tblcd inner join (select cdid, avg(cdcommentstars) as stars, count(*) as antal from tblcd left outer join tblcdcomment on cdid = cdcommentcdid group by cdid) as rating on tblcd.cdid = rating.cdid, inner join tblcat on tblcd.cdcat = tblcat.cdcatid order by tblcd.cdtitle
jeg får denne fejlmeddelelse:
Microsoft JET Database Engine (0x80040E14) Syntax error in FROM clause.
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.