Join en groep vraagje(weeral)
COUNT(DISTINCT st.subtitel) aantal zou het aantal subtitels in een hoofdtitel moeten geven.
als ik
er uit laat heb ik al mijn titels echter ik zou ook willen weten of er wel subtitels zijn en hoeveel.
De velden met relaties vind je hier:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
SELECT
s.nummer,
titel,
if(koopdatum="1900-01-00","",DATE_FORMAT(koopdatum, "%d-%m-%Y")),
if(koopdatum="1900-01-00","",DATE_FORMAT(verschijndatum, "%d-%m-%Y")),
Prijs,
druk,
if(nogniet,"X",""),
if(vermist,"Ja",""),
opmerking,
kl.naam,
sc.naam,
te.naam,
ui.naam,
pl.naam,
uniek,
COUNT(DISTINCT st.subtitel) aantal
FROM
strips_reeksen r
JOIN
strips_strips s
USING (reeksnr)
JOIN
strips_subtitels st
ON st.id = s.uniek
LEFT JOIN
strips_kleurders kl
ON r.Kleurder = kl.nummer
LEFT JOIN
strips_schrijvers sc
ON r.Schrijver = sc.nummer
LEFT JOIN
strips_tekenaars te
ON r.tekenaar = te.nummer
LEFT JOIN
strips_uitgeverij ui
ON r.uitgever = ui.nummer
LEFT JOIN
strips_plaatsen pl
ON r.Kleurder = pl.nummer
where reeksnr=' . $sn . '
order by
s.nummer
;
s.nummer,
titel,
if(koopdatum="1900-01-00","",DATE_FORMAT(koopdatum, "%d-%m-%Y")),
if(koopdatum="1900-01-00","",DATE_FORMAT(verschijndatum, "%d-%m-%Y")),
Prijs,
druk,
if(nogniet,"X",""),
if(vermist,"Ja",""),
opmerking,
kl.naam,
sc.naam,
te.naam,
ui.naam,
pl.naam,
uniek,
COUNT(DISTINCT st.subtitel) aantal
FROM
strips_reeksen r
JOIN
strips_strips s
USING (reeksnr)
JOIN
strips_subtitels st
ON st.id = s.uniek
LEFT JOIN
strips_kleurders kl
ON r.Kleurder = kl.nummer
LEFT JOIN
strips_schrijvers sc
ON r.Schrijver = sc.nummer
LEFT JOIN
strips_tekenaars te
ON r.tekenaar = te.nummer
LEFT JOIN
strips_uitgeverij ui
ON r.uitgever = ui.nummer
LEFT JOIN
strips_plaatsen pl
ON r.Kleurder = pl.nummer
where reeksnr=' . $sn . '
order by
s.nummer
;
Als je count gebruikt in combinatie met andere kolommen, moet je altijd GROUP BY gebruiken
Ik weet niet precies wat je terug wilt krijgen, maar je moet in ieder geval st.subtitel weglaten uit de group by
Ik wil alle velden welke in de sql staan + het aantal subtitels/reeksnr
- Kuifje(2)
- Suske en Wiske (400)
Of
Kuifje(2)
- Kuifje in Afrika
- Kapitein Haddock kan zijn boot niet vinden
Suske en Wiske (400)
- Tante Sidonia is 10 kilo aangekomen
- Wiske heeft last van opvliegers
- enzovoort
?
Je kan wat consequent zijn met de benaming van je kolommen, bijvoorbeeld bij de ene tabel gebruik je nummer en de andere ID, bij het refereren van een tabel zet je "tabel" + NR en sommige weer niet, bij je tabel Reeks staan er opeens Reeks voor de kolommen en NL en ENG door elkaar heen
dit heb ik al: http://www.janr.be/collecties/strips/
Maar sommige titels zoals vakantieboeken hebben meerdere titels. Deze wil ik dan ook laten zien.
@Lendl Verschoor: Ik heb nu al 7 joins. vandaar dat het voor mij moeilijk wordt.
de inconsistentie los ik later wel op. dit komt uit het verre verleden met access. ik copy nog wat code hieruit en later kan ik alles aanpassen met 1 zoek en vervang
Jan
Dus daar moet je de GROUP BY op doen (en officieel eigenlijk ook op alle andere niet aggegrate kolommen).
Dan moet je de JOIN op subtitels een LEFT JOIN maken anders krijg alleen de titels met subtitels.
Nu begin je vanuit de reeks tabel, maar die kan je gewoon weglaten want je hebt daar geen kolommen van in je select staan en schrijver etc. staan ook in de strips tabel.
Hopelijkt lukt het me de volgende keer.
Ik had nog 1 probleemje. Ik had altijd 0. Vergeten de subtitels op te laden.:)
Jan
Zet aliassen op die IF statements, dat maakt het je in PHP een stuk gemakkelijker om de waarde ervan op te vragen.
Nu heb ik er wel geen probleem mee.
Code (php)
1
while(list($nummer, $titel, $koopdatum, $verschijndatum, $prijs, $druk, $nogniet, $vermist, $opmerking, $kleurder, $schrijver, $tekenaar, $uitgever, $plaats, $uniek, $bevatsubtitels )= mysqli_fetch_row($result))
nogmaals bedankt
Gewijzigd op 12/08/2013 16:17:47 door Jan R