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 :

select sur plusieurs tables


Sujet :

Requêtes MySQL

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut select sur plusieurs tables
    Salut,
    J'ai besoin de faire une liste à partir de deux tables différentes. Jusque là je faisais des tableaux en php mais je suis sûr qu'il y a un meilleur moyen de le faire avec mysql.
    Plus précisemment, voici ce dont j'ai besoin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT folder_id FROM tbl_folder WHERE owner_id='104'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT folder_id FROM tbl_file_access WHERE user_id='104' AND full_access=1
    >

    pour éviter d'avoir deux requêtes, j'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT tbl_folder.folder_id, tbl_file_access.folder_id 
    FROM tbl_folder, tbl_file_access 
    WHERE tbl_folder.owner_id='104' 
    AND (tbl_file_access.user_id='104' AND tbl_file_access.full_access='1')
    c'est un début mais reste quand des questions:
    Comment faire pour que cela soit sur une seule colonne ?
    Comment faire pour n'avoir pas de doublons (même avec le distinct j'ai des doublons dans chaque colonne)?

    Merci d'avance

    Julien

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 897
    Points : 6 024
    Points
    6 024
    Par défaut
    folder_id est sensé être le même ?

    si la réponse est oui, pourquoi 2 requètes alors qu'une seule suffit ?


    Sinon, et si ta version de MySQL le permet, tu peux faire une sous requète
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    le résultat de ma première requete est :
    22 , 23, 54, 55

    le résultat de la seconde est :
    23, 23, 22, -1, 22, 22, -1

    et j'aimerai avoir :
    22, 23, 54, 55, -1

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    pourquoi pas utiliser un UNION de tes 2 requetes du haut? (en rajoutant un distinct dans ces 2 requetes)

  5. #5
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    j'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (
    SELECT DISTINCT folder_id 
    FROM tbl_file_access 
    WHERE user_id='104' AND full_access=1
    ) 
    UNION 
    (
    SELECT DISTINCT folder_id 
    FROM tbl_folder 
    WHERE owner_id='104'
    )
    mais j'ai un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     #1064 - You have an error in your SQL syntax near '( SELECT DISTINCT folder_id FROM tbl_file_access WHERE user_id = '104' AND full_' at line 1
    j'utilise la version : 3.23.58

    Julien

  6. #6
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Union est géré a partir de la 4.0 et sans lui, je ne sais pas faire.désolé

  7. #7
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    du coup j'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    CREATE  TEMPORARY  TABLE table_temp(Champ2 int);
    # MySQL returned an empty result set (i.e. zero rows).
     
    LOCK  TABLES tbl_folder READ , tbl_file_access READ ;
    # MySQL returned an empty result set (i.e. zero rows).
     
    INSERT  INTO table_temp
    SELECT folder_id
    FROM tbl_folder
    WHERE owner_id =104;
    # Affected rows:4
     
    INSERT  INTO table_temp
    SELECT folder_id
    FROM tbl_file_access
    WHERE user_id =104
    AND full_access =1;
    # Affected rows:7
     
    SELECT  * 
    FROM table_temp;
    # Rows: 11
     
    UNLOCK  TABLES ;
    # MySQL returned an empty result set (i.e. zero rows).
     
    DROP  TABLE table_temp;
    # MySQL returned an empty result set (i.e. zero rows).
    J'ai pas d'erreur sous phpMyAdmin mais je n'ai rien qui s'affiche non plus !

Discussions similaires

  1. SELECT sur plusieurs tables
    Par heyboy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/11/2006, 15h50
  2. [SQL Access] SELECT sur plusieurs Tables et Composer Champs
    Par Giuseppe dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/11/2005, 15h00
  3. SELECT sur plusieurs Tables et Composer Champs
    Par Giuseppe dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/11/2005, 13h27
  4. un seul SELECT sur plusieurs tables ?
    Par deloo dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/09/2005, 13h57
  5. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 14h54

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