Kun je de velden van een select query conditioneel vullen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nkamp Kamp van de

nkamp Kamp van de

16/08/2017 17:50:29
Quote Anchor link
Hallo,

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

PHP hulp

15/11/2024 18:18:39
 
Ben van Velzen

Ben van Velzen

16/08/2017 18:17:16
Quote Anchor link
Je kan alleen per kolom selecteren, dus een CASE zal ook altijd alleen over 1 kolom werken, nooit meerdere.
 
Peter K

Peter K

17/08/2017 07:31:04
Quote Anchor link
Kun 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?
 



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.