INNER JOIN adhv voorwaarden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ron -

Ron -

14/04/2011 13:43:18
Quote Anchor link
Ik vraag me af of het mogelijk is om een INNER JOIN met een andere tabel te doen adhv bepaalde voorwaarden, dit is de code zoals ik hem nu heb, maar dit werkt niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$query
= "SELECT * FROM facturen AS f
        INNER JOIN facturen_factdata AS ff ON ff.factnr = f.factnr
        INNER JOIN klant_gegevens AS kg ON kg.klid = f.klid
        CASE WHEN domein_id IS NOT 0 THEN INNER JOIN domeinen_factdata AS df ON df.id = ff.domein_id
        ELSE WHEN hosting_id IS NOT 0 THEN INNER JOIN hosting_factdata AS hf ON hf.id = ff.hosting_id
        ELSE WHEN periodiek_id IS NOT 0 THEN INNER JOIN periodiek_factdata AS pf ON pf.id = ff.periodiek_id
        END
        WHERE f.factnr = '"
.$invoice."'";
?>


1 van de kolommen domein_id, hosting_id en periodiek_id is NIET leeg, hier staat dan een id in van een rij in een andere tabel, deze tabel dient dan gejoind te worden.

Is dit op de 1 of andere manier mogelijk?

Alvast bedankt voor de hulp.
 
PHP hulp

PHP hulp

17/03/2025 17:51:09
 
Joren de Wit

Joren de Wit

14/04/2011 14:53:07
Quote Anchor link
Het lijkt mij makkelijker om een LEFT JOIN uit te voeren. Op die manier worden er alleen gegevens uit de gejoinde tabel geselecteerd als er ook daadwerkelijk een relatie is, zo niet dan wordt er NULL terug gegeven.

Bovendien ondervang je zo ook de situatie waarin op een factuur zowel een domein als een hostingpakket gefactureerd moet worden...
 
Ron -

Ron -

14/04/2011 15:14:58
Quote Anchor link
Ahh natuurlijk, dat ik daar niet aan gedacht heb. Er zijn natuurlijk meerdere manieren van joinen.

Hartstikke bedankt, hiermee lukt het.
 



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.