[SQL]Gegevens worden door query 3x opgehaald

Pagina: 1
Acties:

  • mithras
  • Registratie: Maart 2003
  • Niet online
Ik heb een probleempje met een query. Met een eigen geschreven cms is er de mogelijkheid om op blogitems te reageren. De tabellen zien er dan als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
plugin_user_users
    id
    name
plugin_user_profile
    id -> plugin_user_users.id
    email
    website
plugin_blog_reactions
    id
    news_id -> plugin_blog_items.id
    user_id -> plugin_users_id
    user_name
    user_email
    user_website
    message

Ik heb expres het profiel en de user tabel gescheiden gehouden, zo hou je je user-managment gescheiden van alle off-topic meuk als hobbies, msn adres etc. Het is wel 1:1 informatie, maar deze overweging moet niet zoveel uitmaken voor de fout in de query.
Zoals je ziet is het dus mogelijk in de database om "anoniem" te reageren: je hoeft niet geregistreerd te staan om een reactie achter te laten. Hiervoor moet je wel een naam en geldig email adres invoeren, de website is optioneel. Dus: of user_id is leeg, of user_name en user_email zijn leeg. Alle drie leeg kan niet.

Tot slotte de query die alle reacties (en andere benodigde informatie) ophaalt bijbehorend bij een bepaald artikel:
code:
1
2
3
4
5
6
7
SELECT R.id, U.name, U.id AS user_id, R.user_name, R.message, R.user_email, R.user_url AS user_website, P.website
FROM plugin_user_profile AS P, plugin_blog_reactions AS R
LEFT JOIN plugin_user_users AS U
ON R.user_id=U.id
AND P.id=U.id
WHERE R.news_id=[insert article id]
ORDER BY date ASC
Dit werkte _eerst_ wel, maar door een wijziging klopt er niets meer van |:( En ik weet natuurlijk niet meer wat ik gewijzigd heb 8)7

Hoe het fout gaan kan je bijvoorbeeld hier zien: http://juriansluiman.nl/b...kend-al-pakjesavond?.html
Het bericht van "bas" is een anoniem bericht, die van floris en van mij (jurian) zijn van ingelogde gebruikers. Maar er klopt niets meer van, de berichten worden drie keer opgehaald :S
De database is een MySQL geval. Kan iemand mijn query nakijken, want ik staar me er een aantal dagen gek op, maar het juiste komt er niet uitrollen...

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
FROM plugin_blog_reactions AS R
LEFT JOIN plugin_user_users AS U ON R.user_id = U.id
LEFT JOIN plugin_user_profile AS P ON p.id = U.id

Je doet nu namelijk een cross join tussen de plugin_user_profile en plugin_blog_reactions.

  • mithras
  • Registratie: Maart 2003
  • Niet online
Shadowman schreef op zaterdag 25 november 2006 @ 12:35:
FROM plugin_blog_reactions AS R
LEFT JOIN plugin_user_users AS U ON R.user_id = U.id
LEFT JOIN plugin_user_profile AS P ON p.id = U.id

Je doet nu namelijk een cross join tussen de plugin_user_profile en plugin_blog_reactions.
Mm, natuurlijk :P In iedergeval bedankt :)