PHP join
Ik heb zitten vechten als een gek met inner join/left outer join en die dingen.
Ik had er echt 0 ervaring mee dus nu heb ik een code gemaakt maar hij werkt voor geen meter.
Mijn code is:
Code (php)
1
2
3
4
5
2
3
4
5
SELECT * FROM enquete_questions
AS eq LEFT OUTER JOIN enquete_answers AS ea
on eq.id = eq.questionid
WHERE eq.status=0
WHERE NOT EXISTS(SELECT * FROM enquete_answers WHERE door='$naam')
AS eq LEFT OUTER JOIN enquete_answers AS ea
on eq.id = eq.questionid
WHERE eq.status=0
WHERE NOT EXISTS(SELECT * FROM enquete_answers WHERE door='$naam')
Mijn database van 'enquete_questions' ziet er zo uit: (Niet volledig maar het gaat zo door met question2mp1 en zo iets dus niks belangrijks)
http://gyazo.com/ac21c7f80974d9d17ec64f8274a25e09
Mijn database van 'enquete_answers' ziet er zo uit:
http://gyazo.com/8c4d9c601d69691da2cfcddabd589ba6
Wat ik wil is:
Een bepaalde query die controllerd op de volgende dingen:
- De enquete status (bij enquete_questions) staat op 0
- De enquete is nog niet in gevuld (Bij enquete_answers(Zoals je ziet word het op naam opgeslagen van de gebruiker))
Ik heb geen idee hoe ik dit zou moeten maken en hoop echt dat 1 van jullie mij hier mee kan helpen, want mijn code werkt totaal niet.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
SELECT
eq.id, eq.door //etc.
FROM
enquete_questions eq
JOIN
enquete_answers AS ea
ON
eq.id = eq.questionid
WHERE
eq.status=0 AND ea.questionanswer1 IS NULL
eq.id, eq.door //etc.
FROM
enquete_questions eq
JOIN
enquete_answers AS ea
ON
eq.id = eq.questionid
WHERE
eq.status=0 AND ea.questionanswer1 IS NULL
Zoiets?
Of bestaat er nog helemaal geen record voor de gebruiker in ea?
Er komt pas een record in EA als de enquete is ingevuld
Code (php)
1
2
3
2
3
SELECT * FROM vragen v
LEFT JOIN antwoorden a ON a.vraag_id = v.id
where a.vraag_id IS NULL
LEFT JOIN antwoorden a ON a.vraag_id = v.id
where a.vraag_id IS NULL
Toevoeging op 17/03/2015 13:39:21:
hij moet namelijk ook controleren of de naam erin voorkomt met een ID erbij van de enquete.
Dus niet algemeenheid maar gewoon per persoon moet gecontroleerd worden
Nu heb je een tabel opbouw die niet flexibel is om verschillende enquêtes te beheren.
Als je gebruikt maakt van genummerde kolommen is dat altijd een teken dat het model van je database niet goed is. In dat topic is al een aanzet gegeven hoe je tabel opbouw er uit zou kunnen zien, waarom doe je daar niets mee?
De reden dat ik daar niks mee doe is omdat ik de MySQL opbouw die hij gebruikt totaal niet snap, dit wel alleen deze enige ding niet
Mogelijk kost het snappen van een goed datamodel je nu een middag of een dag extra. Maar waarschijnlijk verdien je dat wer terug als je niet lastige query's met genummerde kolommen moet gaan samenstellen en met php moeilijke results moet doorlopen...
http://www.phphulp.nl/php/forum/topic/enqute-systeem/97287/
Dit is het model waar aan word gereffereerd in dit topic :).
En als je het niet snapt mag je het altijd vragen :)