Avatar billede Sami420 Nybegynder
22. november 2011 - 19:00 Der er 11 kommentarer og
1 løsning

Hvor mange annoncer er det oprettet i systemet - SQL

Jeg har tre tabeller:

Kategori1 [Kat1_ID, KatrgoriNavn1] 
Kategori2 [kat2_ID, FN_Kate1_ID]
Annoncer  [AnnonceID, FK_kat2 ]


Et kategori i kategori_1 tabellen, kan have flere underkategorier i tabellen Kategorie2

Der kan være oprettet mange annoncer med samme underkategorier.


Det jeg ønsker er , vide følgende :


KatrgoriNavn1 , count(Antal, hvor mange annoncer er høre under det),
Findes et kategori i kategori1, som ike har nogle annoncer tilknyttet skal antal 0 vises
Avatar billede skunken Nybegynder
23. november 2011 - 12:28 #1
Hej Sami420,

Blot for at være sikker på dit problem.
I "Kategori1" har du dine top kategorier og i "Kategori2" har du dine under kategorier. "Kategori2" er altså afhængigt af at der er et top kategori i "Kategori1" ?
Avatar billede Sami420 Nybegynder
23. november 2011 - 12:40 #2
Hej skunken,
jep det er korret forstået
Avatar billede skunken Nybegynder
23. november 2011 - 13:13 #3
Hej igen Sami420,

Er det præcis sådan din tabel ser ud?
For jeg kan ikke se hvor i "Kategori2" du vil skrive en sub-kategori. jeg går udfra at din "kat2_ID" er "Auto Increment" eller hvordan ? mangler der noget i din tabel ?
Avatar billede Sami420 Nybegynder
23. november 2011 - 13:20 #4
Kat1_ID er primærnøgle i tabellen Kategori1
Kat2_ID er primærnøgle i tabellen Kategori2


FN_Kate1_ID i i tabellen Kategori2 er fremmednøgle ref til tabellen Kategori1.


FK_kat2  er fremmednøgle i tabellen Annoncer og REF til kategori1 tabellen
Avatar billede skunken Nybegynder
23. november 2011 - 13:43 #5
Hej igen Sami420,
Så kan jeg ikke se hvad du bruger "Kategori2" til hvis "Annoncer" linker direkte til "Kategori1"
Hvis det er meningen at "Annoncer" linker til "Kategori2" og "Kategori2" linker til "Kategori1" skal du bruge følgende:

SELECT COUNT(AnnonceID) FROM `Annoncer`,`Kategori1`,`Kategori2` WHERE FK_kat2=Kategori2.kat2_ID AND Kategori2.FN_Kate1_ID=Kategori1.Kat1_ID AND Kategori1.KatrgoriNavn1='Dit-Kategori-Navn-Her'

Hvis det bare er meningen at "Annoncer" linker til "Kategori1" skal du bruge følgende:

SELECT COUNT(AnnonceID) FROM `Annoncer`,`Kategori1` WHERE FK_kat2=Kategori1.Kat1_ID AND Kategori1.KatrgoriNavn1='100'


Håber du forstår :)
Avatar billede Sami420 Nybegynder
24. november 2011 - 19:31 #6
Jeg prøver være lidt mere præcis med spørgsmålet:

Jeg har tre tabeller:

Kategori1 [Kat1ID, KatagoriNavn1] 
Kategori2 [kat2ID, FK_Kate1ID, kategorieNavn2]
Annoncer  [AnnonceID, FKkat2ID, tetkst ]


Et kategori i tabellen kategori1 f,esk SKO, kan have flere underkategorier i tabellen Kategorie2 feks, Hjemmesko,Arbejdsko,suttesko..

Der findes  mange annoncer i systemer og de ref til underkategorier. Flere annoncer kan have mange samme kategorier f.esk Hjemmesko


Så Jeg kunne tænke mig lavet en SQL som kan fortælle mig følgende

Alle Kategorie1 Navn, f.esk Sko, tøj, biler osv og hvor mange annoncer er oprettet Under dem.
Altså sådan:

Sko 2
Biler 0
Tøj 40
Avatar billede arne_v Ekspert
30. november 2011 - 03:26 #7
SELECT kategori1.kategori1navn,COUNT(*) AS antal
FROM kategori1,kategori2,annoncer
WHERE kategori1.kat1id=kategori2.fkkat1id AND kategori2.kat2id=annoncer.fkkat2id
GROUP BY kategori1.kategori1navn
Avatar billede Sami420 Nybegynder
30. november 2011 - 19:19 #8
Desværre Arne, den dur heller ikke!

Din Sql viser KUN se kategorier frem som har annoncer.
Meningen er jo ALLE kategorier SKAL vis, Har et kategori ingen annonce skal det vise et 0
Avatar billede arne_v Ekspert
30. november 2011 - 19:40 #9
SELECT kategori1.kategori1navn,COUNT(annoncer.annonceid) AS antal
FROM (kategori1 LEFT JOIN kategori2 ON kategori1.kat1id=kategori2.fkkat1id)
LEFT JOIN annoncer ON kategori2.kat2id=annoncer.fkkat2id
GROUP BY kategori1.kategori1navn
Avatar billede Sami420 Nybegynder
01. december 2011 - 08:22 #10
tak Arne
Avatar billede Sami420 Nybegynder
01. december 2011 - 14:01 #11
Ved ikke lige, hvordan jeg kan "frigive" Arne point ?
Avatar billede arne_v Ekspert
01. december 2011 - 16:07 #12
jeg skal smide et svar foerst
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
Kurser inden for grundlæggende programmering

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