Jointure count
Myster Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
J'aimerais avoir un petit renseignement, en effet je souhaiterait donc pour des statistiques afficher plusieurs informations contenu dans différentes tables comme par exemple phpboost_points, phpboost_badges, phpboost_projets, en clair je voudrais donc compter le nombre d'entrée dans cette table quand l'ID est égal à X, sauf que j'aimerais économiser des requêtes plutôt que de calculer avec plusieurs requêtes pour chaque table, je voudrait savoir s'il est possible de faire une jointure count ? Si oui avez-vous un exemple ?
Merci
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
Oui c'est possible :
Code SQL :
COUNT * FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id WHERE t1.id = 'X'
Mais tu n'es pas obligé de joindre tes tables par l'id, tu joins par ce quelles ont en commun.
Myster Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :

Merci beaucoup
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
Myster Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Bon en fait là je sèche pour mon système de badge, je veux calculer par exemple le nombre de points qu'à l'utilisateur son nombre de commentaires, de topics de messages et lui donner des badges quand il atteint un certain quota, mais quelle solution aurais-tu à me proposer pour checker à chaque fois s'il a atteint son quota ?
Vérifier quand il poste un message sur le forum s'il a atteint son quota ? ou vérifier à chaque fois qu'il ira sur la page d'accueil s'il est illigible à certain badge ?
Merci
Myster Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Par contre j'ai un problème avec une requête, le where user_id ne fonctionne pas
Code PHP :
$bad = PersistenceContext::get_querier()->select("SELECT b.id, b.titre, b.description, b.point, b.messages, u.user_id, u.user_login, p.user_id, p.points, u.id_badges, p.user_msg FROM " . PREFIX . "badges b LEFT JOIN " . PREFIX . "badges_user u ON u.id_badges = b.id LEFT JOIN ". PREFIX ."member p ON u.user_id = p.user_id WHERE u.user_id = 1");
Ca n'affiche rien concernant le where user_id = 1 alors que y'a des entrées dans la BDD
Merci
Édité par Myster Le 22/11/2016 à 08h47
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
Pour ta requête qui ne retourne rien, tu fais bien une boucle pour parcourir les résultats après ?
Code PHP :
while ($row = $bad->fetch()) { echo $row['id']; } $bad->dispose();
Myster Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
Myster Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Fatal error: Call to a member function fetch() on string in
Merci.
Myster Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
Quelle est ta modif exactement ?
Myster Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Code PHP :
private function build_form($user_id) { $form = new HTMLForm('member-view-profile', '', false); $badge = PersistenceContext::get_querier()->select("SELECT b.id, b.titre, b.description, b.point, b.messages, u.user_id, u.user_login, p.user_id, p.points, u.id_badges, p.user_msg FROM " . PREFIX . "badges b LEFT JOIN " . PREFIX . "badges_user u ON u.id_badges = b.id LEFT JOIN ". PREFIX ."member p ON u.user_id = p.user_id WHERE u.user_id = 1"); return $this->build_response($this->tpl, $user_id); while ($row = $badge->fetch()) { # code... }
Mais ça marque Call to a member function fetch() on string in
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
Le return te fais sortir de la fonction.
Myster Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie