IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

requete compliquée Mysql


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut requete compliquée Mysql
    Bonjour à tous,
    J'ai une question un peu compliquée, j'espère être clair:
    J'ai 2 tables USERS et LIAISON. Dans la table LIASON, j'ai deux colonnes : id_groupe et id_user et j'enregistre dans cette table les id_user associés à id_groupe (c'est en fait une variable);
    Voici donc ma question :
    Je fais un SELECT sur mes id_user de la table USERS et je veux que pour chaque reponse a la requete, mysql regarde si j'ai une entrée correspondante dans la table LIAISON, en tenant compte que je lui passe aussi id_groupe. Je voudrais que mysql retourne TRUE ou FALSE si elle trouve ou pas, et qu'elle me resorte un resultat du genre :
    id_user ,TRUE ou FALSE

    J'arrive facilement a un résultat en imbriquant 2 requetes dans mon php, mais j'aimerais avoir un résultat avec une seule requete pour l'utiliser avec amfphp.
    Je suis une bille en mysql et je pige rien aux jointures...

    Bon en me relisant je me rends compte que c'est pas tres clair, peut etre allez vous pouvoir quand même m'aider???

    Merci d'avance,

    BenRom

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    En gros, tu veux savoir pour chacun des user s'ils font partie d'un certain groupe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_user, (L.id_user IS NOT NULL) AS Appartient
    FROM USERS AS U
      LEFT JOIN LIAISON AS L 
        ON U.id_user = L.id_user AND L.id_groupe = $id_groupe
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut euh...
    Merci pour ta réponse Antoun,
    J'ai essayé ta requete, mais c'est super bizarre, mysql me répond que la table users est inconnue dans la liste des champs... en fait j'ai l'impression que c'est les alias U et L que mon editeur sql n'a pas aimé....

    je n'y comprends plus rien... je vais essayer d'etre plus clair, voici les structures des tables :
    USERS : id_user(int), nom_user(varchar), prenom_user(varchar), mail_user(varchar), id_admin(varchar), type_user(varchar), actif_user(tinyint);
    GROUPE : id_groupe(int), nom_groupe(varchar), id_admin(int);
    LIAISON : id_groupe(int), id_user(int);

    voici comment ca se passe :
    un USER est créé par un ADMIN (id_amin dans USERS), puis un GROUPE est créé (id_groupe dans GROUPE) par un ADMIN (id_admin dans GROUPE).
    quand l'ADMIN veut associer un USER à un GROUPE, je ressors tous les USERS qui dépendent de ADMIN, ca c'est simple, puis pour chaque USER choisi, je fais un INSERT dans la table LIAISON. Jusqu'ici tout va bien.

    Maintenant ca se complique pour l'édition des membres d'un GROUPE. J'ai donc besoin, en connaissant $id_admin et $id_groupe de trouver tous les USERS qui sont OU qui ne sont pas dans le GROUPE pour pouvoir soit les supprimer du GROUPE, soit en ajouter de nouveaux. Ma requete en francais serait :
    SELECT les infos de USER suivantes : id_user, nom_user(...) et TRUE s'il appartient a GROUPE (s'il y a un enregistrement dans LIAISON avec id_groupe = $id_groupe et id_user=chaque id_user de l'ADMIN), ou FALSE si pas d'enregistrement dans LIAISON.

    J'espere avoir été plus clair, en fait ca marche bien en php avec une boucle de requetes, mais ca va etre super long a traiter s'il y a bcp d'enregistrement dans la base, donc je me disais que ca doit pouvoir se faire avec une seule requete....
    voici le code php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $sql = "select id_user, nom_user,prenom_user from USERS where id_admin = $id_admin and type_user='type1' and actif_user = 1";
    $resultat  = mysql_db_query($base, $sql);
    while ($row = mysql_fetch_assoc($resultat))
    {
       $sql2 = "select * from LAISON where id_user=".$row['id_user']." and id_groupe=$id_groupe";
       $resultat2  = mysql_db_query($base, $sql2);
       $num_rows = mysql_num_rows($resultat2);
       $row['appartient'] = ($num_rows>0) ? 'true': 'false';
       echo "au final : nom = ".$row['nom_user'].", appartient= ".$row['appartient']."<BR>";
    }
     
    mysql_free_result($resultat);
    J'ai une autre question : existe t'il des editeurs graphiques de requete pour mysql comme je crois que ca existe pour access? on choisi les champs dans des tables et la requete ressort apres???


    Désolé d'avoir été si long !
    BenRom

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut j'avance...
    Me revoilou!
    J'ai réussi a bidouller en php pour avoirun résultat qui marche parce qu'en fait j'utilise amfphp et je pense que c'est pas vraiment bon d'avoir des requetes dans des boucles... bref, pour l'instant j'arrive a avoir ce que je veux avec une boucle, mais j'aimerais vraiment pouvoir avoir mon recordset avec une seule requete...

    Une question en passant : quelqu'un connait un site de tuto pour le mysql? la documentation officielles et tres complete, mais pas très claire...

    BenRom

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par benrom
    Merci pour ta réponse Antoun,
    J'ai essayé ta requete, mais c'est super bizarre, mysql me répond que la table users est inconnue dans la liste des champs... en fait j'ai l'impression que c'est les alias U et L que mon editeur sql n'a pas aimé....
    Les alias masquent le nom original de la table (ce qui est très pratique quand tu as plusieurs instances de la même table. C'est parfaitement normal, et ton éditeur n'y est pour rien
    Citation Envoyé par benrom
    Ma requete en francais serait :
    SELECT les infos de USER suivantes : id_user, nom_user(...) et TRUE s'il appartient a GROUPE (s'il y a un enregistrement dans LIAISON avec id_groupe = $id_groupe et id_user=chaque id_user de l'ADMIN), ou FALSE si pas d'enregistrement dans LIAISON.
    J'enrichis donc ma requête... Appartient vaudra 1 (true) si ton User est dans le groupe et 0 (false) sinon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT U.id_user, U.nom_user, U.prenom_user, (L.id_user IS NOT NULL) AS Appartient
    FROM USERS AS U
      LEFT JOIN LIAISON AS L 
        ON U.id_user = L.id_user AND L.id_groupe = $id_groupe
    WHERE U.id_admin = $id_admin 
     and U.type_user='type1' 
     and U.actif_user = 1
    Citation Envoyé par benrom
    J'ai une autre question : existe t'il des editeurs graphiques de requete pour mysql comme je crois que ca existe pour access? on choisi les champs dans des tables et la requete ressort apres???
    http://mysql.developpez.com/faq/?pag...VERS_interface
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par benrom
    Une question en passant : quelqu'un connait un site de tuto pour le mysql? la documentation officielles et tres complete, mais pas très claire...
    http://mysql.developpez.com/#tutoriels

    Sinon, il existe d'excellents livres pour cela, à des prix parfaitement dérisoires
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Merci!!!!
    Bonjour et merci!!
    Ca marche nickel, et merci aussi pour les autres infos, j'irai voir les tuto tres vite!

    BenRom

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de requete SQL compliqué (Mysql)
    Par jejemimi dans le forum Langage SQL
    Réponses: 18
    Dernier message: 23/02/2011, 18h24
  2. probleme de requete php/mysql
    Par ph_anrys dans le forum Requêtes
    Réponses: 5
    Dernier message: 06/03/2006, 15h26
  3. requete php mysql
    Par calitom dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/02/2006, 16h24
  4. Requete générale MySQL
    Par cedre22 dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/01/2006, 11h43
  5. requete compliquer pour generer graphique
    Par keiser1080 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/01/2006, 09h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo