Avatar billede jakobandersen Nybegynder
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
Avatar billede nordclc Nybegynder
12. juli 2001 - 12:19 #1
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
Avatar billede jakobandersen Nybegynder
12. juli 2001 - 12:29 #2
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
Avatar billede nordclc Nybegynder
12. juli 2001 - 13:49 #3
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
Avatar billede nordclc Nybegynder
12. juli 2001 - 13:50 #4
Det er lavet i Access, så du skal måske fjerne \"AS AntalOfFeltid\"???
Avatar billede jakobandersen Nybegynder
12. juli 2001 - 13:58 #5
Det virker ikke jeg får stadigvæk ikke IDet for de kolonner hvor der intet data er i.
Avatar billede nordclc Nybegynder
12. juli 2001 - 14:03 #6
Er det en forespørgsel i Access du sidder med, eller hvad er det?
Avatar billede jakobandersen Nybegynder
12. juli 2001 - 14:04 #7
Det er MS SQL, og jeg kører PT. via Query analyser men det skal senere bruges i noget ASP
Avatar billede nordclc Nybegynder
12. juli 2001 - 14:09 #8
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
Avatar billede jakobandersen Nybegynder
12. juli 2001 - 14:25 #9
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.
Avatar billede nordclc Nybegynder
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
Avatar billede jakobandersen Nybegynder
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.
Avatar billede nordclc Nybegynder
12. juli 2001 - 14:57 #12
Keep it open
Avatar billede nordclc Nybegynder
12. juli 2001 - 15:28 #13
Er det programmet msqry32.exe som du kalder MS SQL?
Avatar billede nordclc Nybegynder
12. juli 2001 - 15:31 #14
Sludder og vrøvl. Har du msqry32.exe (MS SQL) på din maskine?
Avatar billede jakobandersen Nybegynder
12. juli 2001 - 16:19 #15
MS SQL er en database server, jeg bruger MS Query analyser til at connecte op mod denne databaseserver.
Avatar billede proaccess Nybegynder
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...
Avatar billede jakobandersen Nybegynder
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
Avatar billede jakobandersen Nybegynder
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester