Join en groep vraagje(weeral)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

11/08/2013 19:48:21
Quote Anchor link
Ik krijg het weer niet in orde.
COUNT(DISTINCT st.subtitel) aantal zou het aantal subtitels in een hoofdtitel moeten geven.
als ik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
JOIN
  strips_subtitels st
  ON st.id = s.uniek

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:
Afbeelding
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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
;
 
PHP hulp

PHP hulp

28/03/2024 16:43:42
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/08/2013 19:55:57
Quote Anchor link
Als je count gebruikt in combinatie met andere kolommen, moet je altijd GROUP BY gebruiken
 
Jan R

Jan R

11/08/2013 20:06:24
Quote Anchor link
Bedank deze was er af gevallen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
    
GROUP BY
s.reeksnr, st.subtitel


maar dat helpt niet. waar moet ik nog op "groepen"?
Gewijzigd op 11/08/2013 20:06:39 door Jan R
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/08/2013 20:10:23
Quote Anchor link
Ik weet niet precies wat je terug wilt krijgen, maar je moet in ieder geval st.subtitel weglaten uit de group by
 
Jan R

Jan R

11/08/2013 20:13:49
Quote Anchor link
Ik wil alle velden welke in de sql staan + het aantal subtitels/reeksnr
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/08/2013 20:34:23
Quote Anchor link
Maar wil je dit
- 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
?
 
Lendl Verschoor

Lendl Verschoor

11/08/2013 21:00:59
Quote Anchor link
Maak eerst een query met alleen de 2 tabellen voor de count en vul daarna de query aan met de andere namen (joins) van de tabellen.

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
 
Jan R

Jan R

11/08/2013 21:24:32
Quote Anchor link
@ger:
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
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/08/2013 09:00:26
Quote Anchor link
Jan, het is inderdaad wel een beetje onoverzichtelijk, ik zie nu pas dat de kolom uniek je PK is.
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.
 
Jan R

Jan R

12/08/2013 10:20:59
Quote Anchor link
Bedankt,

Hopelijkt lukt het me de volgende keer.

Ik had nog 1 probleemje. Ik had altijd 0. Vergeten de subtitels op te laden.:)

Jan
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/08/2013 10:50:25
Quote Anchor link
Ow ja, nog even een tip:
Zet aliassen op die IF statements, dat maakt het je in PHP een stuk gemakkelijker om de waarde ervan op te vragen.
 
Jan R

Jan R

12/08/2013 12:35:52
Quote Anchor link
Ga ik zeker doen.
Nu heb ik er wel geen probleem mee.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
while(list($nummer, $titel, $koopdatum, $verschijndatum, $prijs, $druk, $nogniet, $vermist, $opmerking, $kleurder, $schrijver, $tekenaar, $uitgever, $plaats, $uniek, $bevatsubtitels )= mysqli_fetch_row($result))
leest in volgorde.

nogmaals bedankt
Gewijzigd op 12/08/2013 16:17:47 door Jan R
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.