J'ai 2 tables. Une table contient des messages et l'autre contient des votes pour les messages. Chaque membre peut voter (+ ou -) pour chaque message. (Exemple de structure :)Comment combiner les données de 2 tables dans des circonstances?
- Posts posts: pid, appartient, userp, text.
- Tableau des voix: vid, userv, postid, vote.
Également une table qui contient les informations pour les utilisateurs.
Ce que je veux est: En supposant que je suis un membre connecté. Je veux montrer tous les messages, et à ceux que j'ai déjà voté, ne pas me laisser voter à nouveau. (Et me montrer ce que j'ai voté + ou -)
Ce que je l'ai fait jusqu'à maintenant est très mauvais car il va faire beaucoup de requêtes:
SELECT `posts`.*, `users`.`username`
FROM `posts`,`users`
WHERE `posts`.belongs=$taken_from_url AND `users`.`usernumber`=`posts`.`userp`
ORDER BY `posts`.`pid` DESC;
puis:
foreach ($query as $result) {if (logged_in) {select vote from votes....etc} }
Donc, cela signifie que si je suis connecté et qu'il affiche 30 messages, il fera 30 requêtes pour vérifier si à chaque poste j'ai voté et ce que j'ai voté. Ma question est, puis-je le faire plus court avec un JOIN (je suppose) et comment? (J'ai déjà essayé quelque chose, mais je n'ai pas réussi)
salut, merci de répondre. Oui, pour les visiteurs (non connectés) il y aurait une autre requête (plus facile). Pour les membres, s'ils ont voté +1, ils stockent à la base de données le mot: "plus", sinon le mot "moins". Pour ces membres qui n'ont pas voté, alors il ne stocke rien (donc il y aura le lien pour voter). Je vais essayer le code et je vais dire si je trouve un problème. Merci beaucoup! :) – Nick