Requete MySQL avec multi utilisateurs
Fermé
khivan
Messages postés
3
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
15 avril 2013
-
14 avril 2013 à 23:13
Utilisateur anonyme - 15 avril 2013 à 19:35
Utilisateur anonyme - 15 avril 2013 à 19:35
A voir également:
- Requete MySQL avec multi utilisateurs
- Mysql community server - Télécharger - Bases de données
- Multi exp pokemon diamant ✓ - Forum Jeux vidéo
- Whatsapp multi compte - Accueil - WhatsApp
- Multi boot - Guide
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
4 réponses
Utilisateur anonyme
15 avril 2013 à 10:36
15 avril 2013 à 10:36
Bonjour
Il y a peut-être plus léger
Cette requête te donne la liste de toutes les associations 2 personnes - événement.
Si c'est pour un cas particulier, Tu peux ajouter un WHERE ou mieux, ajouter des conditions dans les JOIN pour alléger le travail du serveur de BDD
Il y a peut-être plus léger
SELECT u1.nom_user,u2.nom_user,e.nom_event FROM events_users eu1 JOIN events_users eu2 ON (eu1.id_event=eu2.id_event AND eu2.id_user> eu1.id_user) JOIN users u1 ON u1.id_user=eu1.id_user JOIN users u2 ON eu2.id_user=u2.id_user JOIN events e ON eu1.id_event=e.id_event
Cette requête te donne la liste de toutes les associations 2 personnes - événement.
Si c'est pour un cas particulier, Tu peux ajouter un WHERE ou mieux, ajouter des conditions dans les JOIN pour alléger le travail du serveur de BDD
khivan
Messages postés
3
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
15 avril 2013
15 avril 2013 à 18:18
15 avril 2013 à 18:18
Waho, ça marche effectivement :)
Bon je vois que j'ai encore de nombreux progrès à faire en php/mysql car je n'utilisais que des WHERE pour mes conditions de requête. J'essaie de me renseigner un peu plus sur les JOIN et ON pour vraiment comprendre le fond de cette requête :).
Si j'ai bien compris, on créé deux 'instances' de la table users et events_users pour éviter un conflit et on met la condition que l'id_user 2 est différent (plus grand) que l'id_user 1 c'est ça ?
En tout cas, merci beaucoup du coup de pouce !
Bon je vois que j'ai encore de nombreux progrès à faire en php/mysql car je n'utilisais que des WHERE pour mes conditions de requête. J'essaie de me renseigner un peu plus sur les JOIN et ON pour vraiment comprendre le fond de cette requête :).
Si j'ai bien compris, on créé deux 'instances' de la table users et events_users pour éviter un conflit et on met la condition que l'id_user 2 est différent (plus grand) que l'id_user 1 c'est ça ?
En tout cas, merci beaucoup du coup de pouce !
khivan
Messages postés
3
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
15 avril 2013
Modifié par khivan le 15/04/2013 à 19:16
Modifié par khivan le 15/04/2013 à 19:16
Petite chose qui me tracasse : lors du traitement des résultats de requêtes, je ne peux pas différencier les deux utilisateurs car les deux colonnes s'appellent toutes les deux 'nom_user' ... Comment les distinguer ?
Nevermind, résolu en utilisant 'u1.nom_user as user1' et 'u2.nom_user as user2'
Nevermind, résolu en utilisant 'u1.nom_user as user1' et 'u2.nom_user as user2'
Utilisateur anonyme
Modifié par le père. le 15/04/2013 à 19:36
Modifié par le père. le 15/04/2013 à 19:36
Oui, je crois que tu as bien compris le principe quand tu parles de 2 'instances' entre guillemets.
La condition > (ou <, ce serait la même chose) sur les id_user sert à deux choses à la fois : à éviter d'avoir des résultats du type Pierre-Pierre et des doublons Pierre-Paul et Paul-Pierre
Pour distinguer les deux noms d'utilisateur, il faut utiliser des alias comme je l'ai fait pour les tables :
La syntaxe complète pour les alias est d'ailleurs AS nom_user1 ... AS nom_user2 etc, mais le mot-clef AS est facultatif, et comme je suis fainéant...
La condition > (ou <, ce serait la même chose) sur les id_user sert à deux choses à la fois : à éviter d'avoir des résultats du type Pierre-Pierre et des doublons Pierre-Paul et Paul-Pierre
Pour distinguer les deux noms d'utilisateur, il faut utiliser des alias comme je l'ai fait pour les tables :
SELECT u1.nom_user nom_user1, u2.nom_user nom_user2, e.nom_event FROM events_users eu1 JOIN events_users eu2 ON (eu1.id_event=eu2.id_event AND eu2.id_user> eu1.id_user) JOIN users u1 ON u1.id_user=eu1.id_user JOIN users u2 ON eu2.id_user=u2.id_user JOIN events e ON eu1.id_event=e.id_event
La syntaxe complète pour les alias est d'ailleurs AS nom_user1 ... AS nom_user2 etc, mais le mot-clef AS est facultatif, et comme je suis fainéant...