Avatar billede Søren Bech Morsing Praktikant
29. januar 2003 - 14:54 Der er 6 kommentarer og
2 løsninger

omskrivning af SQL sætning, left join?

SQLQUERY = "SELECT COUNT(k.kundeid) AS antal, m.medie, m.indrykning, m.land, m.pris, m.indrykket, m.id FROM medierliste m, kunder k WHERE k.medier = m.id AND m.deleted = false GROUP BY m.medie, m.indrykning, m.land, m.pris, m.indrykket, m.id ORDER BY m.medie" ;

Ovenstående virker fint, den tager bare kun posterne hvis der er en relation. Jeg vil gerne hive alle poster ud fra medierliste, uanset om der er nogle relation til tabellen kunder
Avatar billede nop Nybegynder
29. januar 2003 - 15:05 #1
select count(kundeid) as antal from kunder
Er det ikke nok ?
--nop
Avatar billede nop Nybegynder
29. januar 2003 - 15:08 #2
eller er det:
select count(id) as antal from medierliste
Avatar billede Søren Bech Morsing Praktikant
29. januar 2003 - 18:26 #3
nop: jeg joiner jo 2 tabeller!

Har bare ikke brugt en Inner join
Avatar billede proaccess Nybegynder
29. januar 2003 - 19:07 #4
SELECT COUNT(k.kundeid) AS antal, m.medie, m.indrykning, m.land, m.pris, m.indrykket, m.id FROM medierliste m LEFT JOIN kunder k ON k.medier = m.id WHERE m.deleted = false GROUP BY m.medie, m.indrykning, m.land, m.pris, m.indrykket, m.id ORDER BY m.medie
Avatar billede Søren Bech Morsing Praktikant
29. januar 2003 - 19:50 #5
proaccess: kan det betyde noget jeg laver den count på kundeid?
Jeg har nemlig selv forsøgt med den fremgangsmåde. Betyder det noget om der står ON m.id = k.medier i stedet for det du skriver?

Prøver lige igen i morgen tidlig
Avatar billede nop Nybegynder
30. januar 2003 - 08:55 #6
Nå ok, du skriver ellers til slut at du vil hive(tælle) alle poster i medier uanset om der er en relation til kunder.
Men du vil altså tælle antal forskellige kunder der optræder i medier, idet der tages hensyn til at medier kan være markeret slettet ? Sådan forstår jeg det. --nop
Avatar billede proaccess Nybegynder
30. januar 2003 - 10:35 #7
Du kan evt. prøve med følgende:

SELECT SUM(IIf(k.kundeid Is Not Null, 1, 0)) AS antal, m.medie, m.indrykning, m.land, m.pris, m.indrykket, m.id FROM medierliste m LEFT JOIN kunder k ON k.medier = m.id WHERE m.deleted = false GROUP BY m.medie, m.indrykning, m.land, m.pris, m.indrykket, m.id ORDER BY m.medie
Avatar billede websmith Nybegynder
30. januar 2003 - 14:16 #8
du skal bruge en right outer join

SELECT COUNT(k.kundeid) AS antal, m.medie, m.indrykning, m.land, m.pris, m.indrykket, m.id FROM medierliste m, kunder k
right outer join kunder on medierliste.id=kunder.medier
where m.deleted = false
GROUP BY m.medie, m.indrykning, m.land, m.pris, m.indrykket, m.id ORDER BY m.medie

Det kan også være at du skal bytte om på tabellerne i dit join, Jeg kan ikke lige huske det.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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