2 qry naar 1

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

04/08/2013 19:15:52
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$sql2='SELECT muziek_titels.SerieNR, muziek_titels.Titel, muziek_types.Tekst, muziek_titels.Prijs, DATE_FORMAT(muziek_titels.gekocht, "%d-%m-%Y"), muziek_labels.Tekst
                    FROM muziek_types right JOIN (muziek_labels right JOIN muziek_titels ON muziek_labels.ID = muziek_titels.LabelID) ON muziek_types.ID = muziek_titels.TypeID order by muziek_titels.Titel;';


$sql2='Select count(distinct uitvoerder), uitvoerder as aantal from muziek_liedjes where serienr="' . $SerieNR .'"';


Hoe kan ik dit in 1 keer uitvoeren
Dit zijn mijn velden en relatie welke ik in Acces gebruikteAfbeelding

Ik wil dus bij elke titel weten hoeveel verschillende uitvoerders er zijn.

Jan
Gewijzigd op 04/08/2013 19:29:11 door Jan R
 
PHP hulp

PHP hulp

17/11/2024 16:46:52
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

04/08/2013 20:01:27
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT t.serieNR,
    t.titel,
    COUNT(DISTINCT l.uitvoerder) aantal
FROM
    muziek_titels t
JOIN
    muziek_liedjes l
    USING (serieNR)
GROUP BY t.serieNR, t.titel
Gewijzigd op 05/08/2013 10:47:04 door Ger van Steenderen
 
Jan R

Jan R

04/08/2013 20:54:58
Quote Anchor link
Bedankt maar dan verlies ik de andere velden.

Het een of het ander had ik al gevonden maar dan is het traag vind ik
Gewijzigd op 04/08/2013 21:00:10 door Jan R
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/08/2013 10:46:35
Quote Anchor link
Jan, dit was een voorbeeld, je kan dit naar believen uitbreiden met meerdere velden en of tabellen.
Dit kan nooit trager zijn dan voor elke titel een query uit te voeren voor het aantal uitvoerders.
Ik zie trouwens dat ik de DISTINCT vergeten was in het voorbeeld, zal het even aanpassen.
 
Jan R

Jan R

05/08/2013 16:40:33
Quote Anchor link
Hoi, Ger,

Normaal gezien heb ik hier geen probleem mee maar gezien de al 3 joins en nu nog een group by kom ik er niet uit om alle velde welke ik nodig heb in orde te krijgen. ofwel heb ik 0 records ofwel een paar duizend ipv 7à8 honderd

Toch in elke geval bedankt om mee te helpen.

Jan
Gewijzigd op 05/08/2013 16:41:12 door Jan R
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/08/2013 17:43:22
Quote Anchor link
Oké, een wat uitgebreider voorbeeld dan
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
SELECT
    serieNR,
    t.titel,
    COUNT(DISTINCT l.uitvoerder) aantal,
    ty.Tekst,
    la.Tekst la_tekst
FROM
    muziek_titels t
JOIN
    muziek_liedjes l
     USING (serieNR)
LEFT JOIN
    muziek_labels la
    ON t.LabelID = la.ID
LEFT JOIN
    muziek_types ty
    ON l.TypeID = ty.ID
GROUP BY
    serieNR, t.titel, ty.Tekst, la_tekst    

Je ziet dus dat ik de volgorde heb omgedraaid en een LEFT ipv van een RIGHT JOIN gebruikt hebt, dat maakt het opbouwen van een query wat eenvoudiger (terugdenken is eenvoudiger - in ieder geval voor mij ;-)- dan vooruitdenken).
In jouw geval heb alle joins op de muziek titels dus hoef je geen geneste joins te gebruiken, het uiteindelijke resultaat is hetzelfde alleen is dit makkelijker te lezen.
 
Jan R

Jan R

06/08/2013 07:30:43
Quote Anchor link
Heel hartelijk Bedankt Ger,

Dit is het dus geworden :)
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
SELECT
    serieNR,
    t.titel,
    COUNT(DISTINCT l.uitvoerder) aantal,
    ty.Tekst,
    la.Tekst la_tekst,
    Prijs,
    DATE_FORMAT(gekocht, "%d-%m-%Y"),
    l.uitvoerder
FROM
    muziek_titels t
JOIN
    muziek_liedjes l
     USING (serieNR)
LEFT JOIN
    muziek_labels la
    ON t.LabelID = la.ID
LEFT JOIN
    muziek_types ty
    ON t.TypeID = ty.ID
GROUP BY
    serieNR, t.titel, ty.Tekst, la_tekst


Klein foutje: ON tl.TypeID = ty.ID Dat was om me te testen? :)
Jan

PS Op deze manier is het dus vele malen sneller dan voorheen. 1qry per lijn + 1 voor de totale tabel tegenover 1 als totaal
Gewijzigd op 06/08/2013 07:35:33 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.