Goedemiddag allemaal,

Ik weet niet goed hoe ik het moet uitleggen, maar dit is de situatie:


tabel:
ID | naam        | referentieID |
1  | A           |    1         |


Hierop volgt een query wat lijkt op:

SELECT a.referentieID, b.* 
FROM tabelA as a
LEFT JOIN tabelB as b
ON a.referentieID = b.referentieID 
WHERE a.id = 1
ORDER BY b.iets ASC


Nu wil ik een route bepalen in dezelfde query:

tabel ziet er dan zo uit:

ID | naam        | referentieID | referentieID2 |
1  | A           |    1         |    NULL       |
2  | B           |    NULL      |    1          |


met een idee qua code wat ik ongeveer zoek:

SELECT b.*, c.*, d,*
FROM tabelA as a

IF referentieID IS NOT NULL
   LEFT JOIN tabelB as b
   ON a.referentieID = b.referentieID  
ELSE 
   LEFT JOIN tabelC as c
   on a.referentieID2 = c.referentieID2

WHERE a.id = 2
ORDER BY c.iets ASC, c.anders


Is zoiets mogelijk?
- Er is dus een soort van IF statement in de query
- Er wordt gezocht op andere kolommen
- ORDER BY is ook anders afhankelijk van de situatie.
Heeft die tabel een soort van boom- of netwerkstructuur? Hoe verschillen referentieID en referentieID2 van elkaar (wat is er bijvoorbeeld op tegen om deze in een koppeltabel te stoppen)?

Het is nogal vaag zo nu wat het voor moet stellen en waar je naartoe wilt.

Reageren