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:


<?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.
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...
Ahh natuurlijk, dat ik daar niet aan gedacht heb. Er zijn natuurlijk meerdere manieren van joinen.

Hartstikke bedankt, hiermee lukt het.

Reageren