Avatar billede mkjaer Nybegynder
25. januar 2006 - 22:39 Der er 4 kommentarer

Få vist resultater, hvor en værdi i en joinet tabel er '1'

Hejsa,

Jeg vil gerne ændre denne query, så der kun tælles poster, hvor produktbillede.status='1' i den COUNT-funktion jeg bruger. Hvis jeg tilføjer en ordinær WHERE klausul i slutningen af query'en, så kommer de produkt-poster, som ikke har noget produktbillede, ikke med.

SELECT produkt.id, producenter.navn, produkt.navn, produkt.tilbud, produkt.trybuy, COUNT(produktbillede.status) as billedeantal, produkt.pris, produkt.online, produkt.sidsteaendring FROM produkt LEFT JOIN producenter ON producenter.id = produkt.producent LEFT JOIN produktbillede ON produkt.id = produktbillede.produktid WHERE produkt.status='1' GROUP BY produkt.id

På forhånd tak,
Hilsen
Martin
Avatar billede jakobdo Ekspert
26. januar 2006 - 11:28 #1
Du svarer vel faktisk selv på det:

Jeg vil gerne ændre denne query, så der kun tælles poster, hvor produktbillede.status='1' i den COUNT-funktion jeg bruger. Hvis jeg tilføjer en ordinær WHERE klausul i slutningen af query'en, så kommer de produkt-poster, som ikke har noget produktbillede, ikke med.

Du må jo tage stilling til om status skal være = 1 eller om de også skal kunne være tomme!
Avatar billede mkjaer Nybegynder
26. januar 2006 - 11:37 #2
Status skal være 1, hvis den skal tælles med. Men er status f.eks. = 0, så skal den ikke tælles med, men posten fra 'produkt'-tabellen skal fortsat med i det samlede resultat.

Så jeg mener ikke, at jeg selv svarer på spørgsmålet. Jeg har i hvertfald ikke en løsning på mit spørgsmål. Måske kan du tilføjes lidt i min query?
Avatar billede jakobdo Ekspert
26. januar 2006 - 11:55 #3
Jeg tror faktisk ikke du kan lave det du ønsker i en query!
Jeg tror jeg forstår hvad du vil lave!
Avatar billede _darkstar_ Nybegynder
25. februar 2006 - 01:44 #4
Der er noget speget ved feltet produkt.status. Har jeg ret i at dette felt er lig 1 hvis der er tilhørende rækker i produktbillede-tabellen og 0 hvis der ikke er nogen? I så fald er det jo redundant og du kan løse problemet ved at se bort fra feltet.

SELECT produkt.id, producenter.navn, produkt.navn, produkt.tilbud, produkt.trybuy, COUNT(produktbillede.status) as billedeantal, produkt.pris, produkt.online, produkt.sidsteaendring FROM produkt LEFT JOIN producenter ON producenter.id = produkt.producent LEFT JOIN produktbillede ON produkt.id = produktbillede.produktid GROUP BY produkt.id

Ikke testet.

Alternativt er det to forskellige forespørgsler, som du godt kan pakke sammen i en, omend det bliver meget omfattende.
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