Kun je de velden van een select query conditioneel vullen?
nkamp Kamp van de
16/08/2017 17:50:29Hallo,
Volgens mij moet dit mogelijk zijn maar ik ben bezig geweest met CASE WHEN en IF, maar ik ben er nog niet achter hoe ik het kan oploassen. Ook niet met googlen, al vind ik het ook moeilijk waarop je moet googlen omdat ik misschien niet term ken waar ik op moet zoeken in dit geval.
Dit is in pseudo code wat ik eigenlijk wil:
SELECT main.veld 1
,main.veld 2
,IF ((select count(*)
from temptable tt
where tt.code = main.code ) > 0) THEN
,main.veld 3
,main.veld 4
,main.veld 5
ELSE
,0 as veld 3
,0 as veld 4
,0 as veld 5
END
From main_table main
WHERE ...
Nu hoop ik niet dat mensen gaan vallen dat de IF niet correct is oid, ik hoop dat jullie begrijpen wat ik graag wil bereiken nl. conditioneel de velden 3, 4 en 5 vullen, die eigenlijk ook nog afhankelijk is van een query.
Of moet je dan voor ieder veld een if conditie zetten zoals:
IF ((select count(*)
from temptable tt
where tt.code = main.code ) > 0, main.veld 3, 0) as veld 3
Maar dit lijkt mij onlogisch, of? Dan heb ik gelijk de volgende uitdaging te pakken: ik kan de tmptable niet meerdere keren 'reopen'. Hier heb ik overigens ook al last van bij een UNION.
Bedankt,
Nico
Volgens mij moet dit mogelijk zijn maar ik ben bezig geweest met CASE WHEN en IF, maar ik ben er nog niet achter hoe ik het kan oploassen. Ook niet met googlen, al vind ik het ook moeilijk waarop je moet googlen omdat ik misschien niet term ken waar ik op moet zoeken in dit geval.
Dit is in pseudo code wat ik eigenlijk wil:
SELECT main.veld 1
,main.veld 2
,IF ((select count(*)
from temptable tt
where tt.code = main.code ) > 0) THEN
,main.veld 3
,main.veld 4
,main.veld 5
ELSE
,0 as veld 3
,0 as veld 4
,0 as veld 5
END
From main_table main
WHERE ...
Nu hoop ik niet dat mensen gaan vallen dat de IF niet correct is oid, ik hoop dat jullie begrijpen wat ik graag wil bereiken nl. conditioneel de velden 3, 4 en 5 vullen, die eigenlijk ook nog afhankelijk is van een query.
Of moet je dan voor ieder veld een if conditie zetten zoals:
IF ((select count(*)
from temptable tt
where tt.code = main.code ) > 0, main.veld 3, 0) as veld 3
Maar dit lijkt mij onlogisch, of? Dan heb ik gelijk de volgende uitdaging te pakken: ik kan de tmptable niet meerdere keren 'reopen'. Hier heb ik overigens ook al last van bij een UNION.
Bedankt,
Nico
PHP hulp
15/11/2024 18:18:39Ben van Velzen
16/08/2017 18:17:16Je kan alleen per kolom selecteren, dus een CASE zal ook altijd alleen over 1 kolom werken, nooit meerdere.
Peter K
17/08/2017 07:31:04Kun je de denkwijze van je script eens toelichten? Je kunt met JOINS etc heel veel bereiken.
Wellicht dat er een andere (snellere) manier is om mee te werken.
Wat wil je graag ophalen, waarvan is het afhankelijk wat je wilt ophalen?
En ook erg belangrijk, waarom heb je dergelijke data allemaal als kolommen opgesteld?
Wellicht dat er een andere (snellere) manier is om mee te werken.
Wat wil je graag ophalen, waarvan is het afhankelijk wat je wilt ophalen?
En ook erg belangrijk, waarom heb je dergelijke data allemaal als kolommen opgesteld?