12. juli 2001 - 12:06
Der er
16 kommentarer og 2 løsninger
GROUP BY vise NULL værdier.
JEg har en database opbygning hvor jeg har en masse poster som er kædet sammen med en tabel vha. et ID. Det jeg ønsker er at hente antal poster der er tilknyttet x id det gør jeg sådan her: SELECT COUNT(*), fk_felt_id FROM tabel WHERE feltx = x GROUP BY fk_felt_id DEt giver mig et resultat der ser f.eks. sådan her ud: fk_felt_id ----------- ------------- 37 0 7 1 2 2 16 3 6 4 Men hvis nu f.eks. jeg får et resultat som dette: fk_felt_id ----------- ------------- 22 0 8 1 11 3 3 4 Mangler jeg jo mit fk_felt_id 2 devs jeg ville gerne have resultatet til at se sådan her ud hvis der ikke forekommer nogle poster med fk_felt_id = 2: fk_felt_id ----------- ------------- 22 0 8 1 0 2 11 3 3 4
Annonceindlæg fra Computerworld
Men du beskriver jo kun 1 tabel! Hvis fk_felt_id(2) ikke er der, så kan den jo heller ikke displayes! Men mener du ikke at du har 2 taballer som du joiner sammen, som en master/detail??? //Claus
JA, jeg joiner dem jeg forsøgte bare at gøre det lidt simpelt, men jeg trænger vist til en genstart: Jeg har denne tabel: PK_FELT_ID NAVN 0 Nummer1 1 Nummer2 2 Nummer3 3 Nummer4 4 Nummer5 Og så denne: PK_DATA_ID NAVN FK_FELT_ID 0 Data1 1 1 Data2 2 2 Data3 1 3 Data4 3 4 Data5 2 5 Data6 1 osv. Lad os så sige at det er ovenstående data der passe mine kriterier altså [Data1-Data6] der vil ingen Count være lig nul for FK_FELT_ID 4 og selvom den er det vil jeg have den vist
Jeg prøver, men det er lidt svært, så vi prøver at holde tungen lige i munden begge to - ikke? Jeg har 2 tabeller: Tabel 1: Feltid, tekst Tabel 2: Feltid, teksten Og jeg tror du skal fokusere på counten og på joinen. Her er min MS SQL til dit svar: SELECT Tabel1.feltid, Count(Tabel2.Feltid) AS AntalOfFeltid FROM Tabel1 LEFT JOIN Tabel2 ON Tabel1.feltid = Tabel2.Feltid GROUP BY Tabel1.feltid; //Claus
Det er lavet i Access, så du skal måske fjerne \"AS AntalOfFeltid\"???
Det virker ikke jeg får stadigvæk ikke IDet for de kolonner hvor der intet data er i.
Er det en forespørgsel i Access du sidder med, eller hvad er det?
Det er MS SQL, og jeg kører PT. via Query analyser men det skal senere bruges i noget ASP
Kan du ikke prøve at oprette mine 2 tabeller i Access, og så lave en forespørgsel med ovenstående select? Så kan vi se om det virker der. For hvis det virker der, så virker selecten også når du skal lave dit ASP script. //Claus
Jeg har ikke lige Access (Er ikke med i XP Enterprise) men Query Analyseren returnerer det som en almindelig SQL forespørgsel fra ASp skulle gøre.
12. juli 2001 - 14:31
#10
Kender den desværre ikke. Hvordan definere man inner og outher join i QA? Jeg ved ikke om det er nogen hjælp, men i Oracle SQL ville man skrive sådan her: Select tabel1.feltid, Count(Tabel2.Feltid) FROM Tabel1, Tabel2 WHERE Tabel1.feltid = Tabel2.Feltid(+) GROUP BY Tabel1.feltid; Hvor \"Tabel2.Feltid(+)\" fortæller at den er outher join, altså skal medtages hvis den findes i tabel1! //Claus
12. juli 2001 - 14:36
#11
Det kender jeg godt, altså Oracle SQL. Men det er bare MS SQL der driller, men nevermind jeg fandt en anden omend noget dårligere løsning. PS: Hvis der er nogen der har en brugbar løsning til MS SQL åbner jeg gerne igen med flere point.
12. juli 2001 - 14:57
#12
Keep it open
12. juli 2001 - 15:28
#13
Er det programmet msqry32.exe som du kalder MS SQL?
12. juli 2001 - 15:31
#14
Sludder og vrøvl. Har du msqry32.exe (MS SQL) på din maskine?
12. juli 2001 - 16:19
#15
MS SQL er en database server, jeg bruger MS Query analyser til at connecte op mod denne databaseserver.
16. juli 2001 - 10:17
#16
Din SQL skal lyde således for at virke: SELECT Tabel1.PK_FELT_ID, Count(Tabel2.PK_DATA_ID) AS AntalOfPK_DATA_ID FROM Tabel1 LEFT JOIN Tabel2 ON Tabel1.PK_FELT_ID = Tabel2.FK_FELT_ID GROUP BY Tabel1.PK_FELT_ID; Bemærk at det er Tabel2, som der tælles på men Tabel1, som der gruperes efter, samtidig skal dine tabeller \"forbindes\" med PK_FELT_ID og FK_FELT_ID, som du jo også har lagt op til i navngivningen...
17. juli 2001 - 19:49
#17
Det virker stadig ikke på min MSSQL men i får lige noget for hjælpen begge to. JEg lavede bare nogle flere forespørgsler og cachede så resultaterne for at få mindre load på web/databaseserver
17. juli 2001 - 19:51
#18
Og det var så¨første gang jeg skulle prøve at give point, det gik sku ikke så godt så her er lige 30 til dig proaccess:
http://www.eksperten.dk/spm/89941
Computerworld tilbyder specialiserede kurser i database-management