Hoi,
op onze website kan elke gebruiker items posten (in dit geval fotoalbums). We willen deze items nu uitlijsten en uiteraard tonen welke items nog niet bekeken werden door de gebruiker. Ik vind echter niet hoe ik deze lijst in één query kan trekken.
albums
- 1 'album1'
- 2 'fotoshoot2'
- 3 'nog iets 3'
- 4 '4de vb.'
users
- 1001, 'jantje'
- 2002, 'pietje'
- 3003, 'nog iemand'
albumsviewed ~= log
- 1, 1001
- 2, 1001
- 2, 2002
- 2, 3003
- 3, 3003
Om te weten hoeveel er niet bekeken zijn hebben we voorlopig deze:
en daar trekken we
van af.
Voor de lijst heb ik op dit moment het volgende:
... doch op basis van deze query kan je enkel zien welke items nog door niemand bekeken werden (gezien = een uid of NULL). Hoe kan ik deze query aanpassen dat ie enkel toont welke items door user 1003 al dan niet bekeken werden?
Alternatief:
Ik herschrijf een bestaande website en daar gebruiken ze nu per item een aparte query om te checken of men het item al gezien heeft. Dat lijkt me niet zo efficient...
op onze website kan elke gebruiker items posten (in dit geval fotoalbums). We willen deze items nu uitlijsten en uiteraard tonen welke items nog niet bekeken werden door de gebruiker. Ik vind echter niet hoe ik deze lijst in één query kan trekken.
| foto_album | id | ... |
| fotoalbumviewed | fid | uid |
albums
- 1 'album1'
- 2 'fotoshoot2'
- 3 'nog iets 3'
- 4 '4de vb.'
users
- 1001, 'jantje'
- 2002, 'pietje'
- 3003, 'nog iemand'
albumsviewed ~= log
- 1, 1001
- 2, 1001
- 2, 2002
- 2, 3003
- 3, 3003
Om te weten hoeveel er niet bekeken zijn hebben we voorlopig deze:
SQL:
1
2
3
| SELECT COUNT(A.fid) FROM fotoalbumviewed AS A LEFT JOIN foto_album AS B ON A.fid=B.id WHERE A.uid = 1003 AND B.status=1; |
en daar trekken we
SQL:
1
| SELECT COUNT(id) FROM foto_album AS B WHERE B.status=1; |
van af.
Voor de lijst heb ik op dit moment het volgende:
SQL:
1
2
3
4
5
6
7
| SELECT A.id, A.type, A.activiteit, A.tijdstip, A.aantal, A.uid, B.uid AS gezien FROM foto_album AS A LEFT JOIN fotoalbumviewed AS B ON A.id = B.fid WHERE A.status=1 GROUP BY A.id ORDER BY A.type, A.activiteit, A.tijdstip LIMIT 0, 500; |
... doch op basis van deze query kan je enkel zien welke items nog door niemand bekeken werden (gezien = een uid of NULL). Hoe kan ik deze query aanpassen dat ie enkel toont welke items door user 1003 al dan niet bekeken werden?
Alternatief:
Ik herschrijf een bestaande website en daar gebruiken ze nu per item een aparte query om te checken of men het item al gezien heeft. Dat lijkt me niet zo efficient...
[ Voor 7% gewijzigd door moozzuzz op 29-08-2008 17:10 . Reden: voorbeeld toegevoegd ]