Foutje in SQL
Ik heb een paar uur lang zitten studeren en proberen met een SQL-query, maar ik ben er nog steeds niet uit. Ik hoop dat iemand van jullie de oplossing weet.
Dit is de query die ik nu heb:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
r.id,
r.reactie,
r.auteur AS auteur_id,
g.naam AS auteur,
UNIX_TIMESTAMP(r.datum) AS datum,
COUNT(gz.id) AS aantal_gezien
FROM
gebruikers AS g, gezien AS gz, reacties AS r
WHERE
gz.reactie = r.id
AND g.id = r.auteur
AND (gz.gebruiker = $gebruiker_id OR gz.gebruiker = NULL)
GROUP BY
r.id
ORDER BY
r.datum DESC
r.id,
r.reactie,
r.auteur AS auteur_id,
g.naam AS auteur,
UNIX_TIMESTAMP(r.datum) AS datum,
COUNT(gz.id) AS aantal_gezien
FROM
gebruikers AS g, gezien AS gz, reacties AS r
WHERE
gz.reactie = r.id
AND g.id = r.auteur
AND (gz.gebruiker = $gebruiker_id OR gz.gebruiker = NULL)
GROUP BY
r.id
ORDER BY
r.datum DESC
Of, met joins, maar komt op hetzelfde neer en met hetzelfde probleem:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT
r.id,
r.reactie,
r.auteur AS auteur_id,
g.naam AS auteur,
UNIX_TIMESTAMP(r.datum) AS datum,
COUNT(gz.id) AS aantal_gezien
FROM
gebruikers AS g
INNER JOIN
(
gezien AS gz
INNER JOIN
reacties AS r
ON gz.reactie = r.id
)
ON g.id = r.auteur
WHERE
gz.gebruiker = $gebruiker_id
GROUP BY
r.id
ORDER BY
r.datum DESC
r.id,
r.reactie,
r.auteur AS auteur_id,
g.naam AS auteur,
UNIX_TIMESTAMP(r.datum) AS datum,
COUNT(gz.id) AS aantal_gezien
FROM
gebruikers AS g
INNER JOIN
(
gezien AS gz
INNER JOIN
reacties AS r
ON gz.reactie = r.id
)
ON g.id = r.auteur
WHERE
gz.gebruiker = $gebruiker_id
GROUP BY
r.id
ORDER BY
r.datum DESC
Wat hij moet doen, is uit een database uit drie verschillende tabellen informatie halen:
- reacties Hier gaat het om: de reactie, de auteur_id en datum
- gebruikers Hier wil ik de naam uit de rij halen waar het id gelijk is aan auteur_id uit tabel reacties
- gezien Dit is een tabel waar elke keer als een reactie gezien wordt een nieuwe rij in wordt geplaatst. Ik wil weten hoe vaak de reactie al gezien is.
Nu gaat alles goed, behalve als de reactie nog niet gezien is. Dan wordt hij helemaal niet opgehaald, omdat gezien.gebruiker niet hetzelfde is als $gebruiker_id (want die rij bestaat niet).
Is het mogelijk om de query zo aan te passen, dat hij bij aantal_gezien gewoon 0 (nul) aangeeft als hij nog niet gezien is.
Het is ook goed als het iets wordt van true/false (wel al gezien of niet gezien) Want het gaat er alleen om of hij al gezien is. Nu kijk ik in mijn script of het aantal keer gezien > 0 (wel gezien) of niet (niet gezien).
Ik hoop dat het duidelijk is. Volgens mij is het ook niet perse nodig om de tabellen helemaal te posten, maar als jullie daar wat aan hebben wil ik dat best doen..
Alvast bedankt
Daan
Edit:
Hoow.. sorry, foutje ;)
En @SanThe: nee, dit was niet expres een bump. :D
En @SanThe: nee, dit was niet expres een bump. :D
Gewijzigd op 01/01/1970 01:00:00 door Daan
Daan schreef op 12.06.2008 14:51:
Edit:
Hoow.. sorry, foutje ;)
En @SanThe: nee, dit was niet expres een bump. :D
En @SanThe: nee, dit was niet expres een bump. :D
Heb ik al zo'n slechte naam? ;-)
Maar niemand die kan helpen??