Toon posts:

CASE poging mysql wil niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
hallo ik heb een tabel leden en een koppeltabel subject_aandoening (staat een
user_id en een aan_id in)

nu wil ik checken welk profiel niet helemaal ingevuld is in 1 query

ik heb dus:

- 3 tabellen (leden,leden_aandoening (kt), leden_medicijnen (kt))

Ik wil dus kijken welk van de leden hun profiel helemaal hebben ingevuld. De leden kunnen een type 0 of type 1 hebben

mogelijkheden:

- type 0: kan geen aandoening hebben en geen medicijnen gebruik
- type 0: kan aangevene hebben dat hij medicijnen gebruikt en moet dan in de koppeltabel (leden_medicijnen ) staan
- type 1: moet altijd in beide koppeltabellen staan

tevens moeten natuurlijk hun voor en achternaam zijn ingevuld(etc)

echter onderstaande werkt niet (versimpelde versie). de query ziet het gewoon als ingevuld profiel
PHP:
1
2
3
4
5
6
7
8
9
10
$sql = "SELECT 
        userid,email 
    FROM 
        leden 
    WHERE 
        CASE type 
        WHEN 1 THEN (SELECT COUNT(*) AS total FROM subject_aandoening WHERE user_id = userid) = 0 
        END 
        AND 
        voornaam = '' OR achternaam = ''            ";


het zal wel in het CASE statement liggen..ik weet ook niet of dat zo kan maar als ik logisch nadenk moet die THEN gewoon een nummer teruggeven..kan dit of hoe anders te doen?

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 20:47
Dit is niet de juiste plaats voor een CASE.

Gewoon
WHERE (type = 0 AND medicijn IS NULL AND aandoening IS NULL)
OR (type = 0 AND ...)
OR (type = 1 AND ...)

Misschien ook handig om LEFT JOIN te gebruiken ipv subqueries, maar dat moet je zelf weten.

Verwijderd

Topicstarter
ja..het probleem is dus dat er ook een type is die geen medicijnen of aandoeningen heeft. Daarnaast kan bijv type 0 geen medicijnen en aandoeningen hebben OF wel medicijnen gebruiken...dat kan niet met een normale where..dat moet met een CASE (die wel in een WHERE kan)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Waarom doe je niet een outer join op beide koppeltabellen? Velden die daarbij leeg blijven konden niet gejoind worden en dus weet je aan de wèl ingevulde velden precies waar je aan toe bent, lijkt me? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.