We hebben de volgende tabellen, met de velden die erin staan
enkelvoudig(antwoord_id, product_id)
producten(product_id, product_omschrijving, artikelnummer)
antwoorden(antwoord_id, type_id, vraag_id, antwoord_text_id)
antwoord_text(antwoord_text_id, text)
vragen(vraag_id, vraagstelling)
Nu wil ik graag een overzicht maken van alle vraagstelling, met de antwoorden die daarbij mogelijk zijn en daarnaast welk artikelnummer dit dan oplevert. Dit alles van een van tevoren gekozen type. Dit doe ik met de volgende query:
Voor zover ik kan zien gaat dit goed (er staat nog geen data in enkelvoudig, maar dit levert dan ook geen resultaten op).
Echter ik zou graag willen dat wanneer als er geen of slechts een deel van de antwoord_id's in enkelvoudig staan, behorende bij het type_id, de overige gevuld worden met blanco velde. Zoals een LEFT of RIGHT join zou opleveren.
Kan iemand van jullie mij in de goede richting sturen?
Zelf zat ik al te denken om 2 joins te doen, maar ik heb eigenlijk nog nooit echt met joins gewerkt. De enige join die ik altijd gehanteerd heb, is zoals nu ook in de query staat, de inner join, maar dan in bovenstaande notatie. Ik ken het principe van de LEFT, RIGHT en OUTER join, maar kom desondanks niet echt verder nu.
[Edit]
Na nog een tijdje door te proberen kom ik nu op de volgende query uit:
Dit geeft tot nu toe het gewilde resultaat, maar ik vraag me wel nog af of dit ook de juiste manier is van join gebruik.
enkelvoudig(antwoord_id, product_id)
producten(product_id, product_omschrijving, artikelnummer)
antwoorden(antwoord_id, type_id, vraag_id, antwoord_text_id)
antwoord_text(antwoord_text_id, text)
vragen(vraag_id, vraagstelling)
Nu wil ik graag een overzicht maken van alle vraagstelling, met de antwoorden die daarbij mogelijk zijn en daarnaast welk artikelnummer dit dan oplevert. Dit alles van een van tevoren gekozen type. Dit doe ik met de volgende query:
PHP:
1
2
3
4
5
6
| $sql = "SELECT v.vraagstelling, t.text, p.artikelnummer FROM enkelvoudig e, vragen v, antwoord_text t, antwoorden a, producten p ". "WHERE e.antwoord_id = a.antwoord_id ". "AND e.product_id = p.product_id ". "AND a.vraag_id = v.vraag_id ". "AND a.antwoord_text_id = t.antwoord_text_id ". "AND a.type_id = '$type_id'"; |
Voor zover ik kan zien gaat dit goed (er staat nog geen data in enkelvoudig, maar dit levert dan ook geen resultaten op).
Echter ik zou graag willen dat wanneer als er geen of slechts een deel van de antwoord_id's in enkelvoudig staan, behorende bij het type_id, de overige gevuld worden met blanco velde. Zoals een LEFT of RIGHT join zou opleveren.
Kan iemand van jullie mij in de goede richting sturen?
Zelf zat ik al te denken om 2 joins te doen, maar ik heb eigenlijk nog nooit echt met joins gewerkt. De enige join die ik altijd gehanteerd heb, is zoals nu ook in de query staat, de inner join, maar dan in bovenstaande notatie. Ik ken het principe van de LEFT, RIGHT en OUTER join, maar kom desondanks niet echt verder nu.
[Edit]
Na nog een tijdje door te proberen kom ik nu op de volgende query uit:
SQL:
1
2
3
4
5
| SELECT v.vraagstelling, t.text, s.antwoord_id, s.product_id, p.artikelnummer FROM ((simpel s RIGHT JOIN antwoorden a ON s.antwoord_id = a.antwoord_id) LEFT JOIN producten p ON s.product_id = p.product_id), vragen v, antwoord_text t WHERE a.vraag_id = v.vraag_id AND a.antwoord_text_id = t.antwoord_text_id ORDER BY a.antwoord_id |
Dit geeft tot nu toe het gewilde resultaat, maar ik vraag me wel nog af of dit ook de juiste manier is van join gebruik.
[ Voor 25% gewijzigd door Crazybyte op 13-08-2007 15:17 ]