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

Langage SQL Discussion :

[MySQL] Liste d'éléments même si il manque des liens


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut [MySQL] Liste d'éléments même si il manque des liens
    Bonjour. Désolé le titre n'est pas très explicite mais je ne sais pas comment expliquer mon problème en une phrase.

    J'ai une table avec des moyens de transports :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    t_transport
    --------------
    id vehicule
    1  vélo
    2  voiture
    3  scooter
    4  moto
    5  bateau
    6  fusée
    J'ai une table (intérmédiare) qui me dit quel utilisateur a quels moyens de transports.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    t_users_transports
    ---------
    id_user id_transport
    1       2
    1       3
    1       5
    2       3
    2       6
    Ce que je cherche à faire est d'afficher tous les transports pour un utilisateur. Exemple pour l'utilisateur 1 qui a trois véhicules, je veux savoir quel vehicule il utilise. J'aimerais avoir quelquechose qui ressemble à ce qui suit ( ou n'importe quoi qui me permette de savoir si l'utilisateur 1 utilise tel ou tel véhicule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    id vehicule  user
    --------------------
    1  vélo      NULL
    2  voiture   1
    3  scooter   1
    4  moto      NULL
    5  bateau    1
    6  fusée     NULL
    Je pense que je dois utiliser des OUTER JOIN mais je n'arrive jamais au bon résultat. L'utilisateur 2 se rajoute dans mes résulats. Si je pouvais avoir un peu d'aide de la part d'âmes charitables, ce serait super chouette.

    Merci.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 105
    Points : 28 397
    Points
    28 397
    Par défaut
    Il faut faire une sélection sur l'Id_User 1...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT   t.id
          ,  t.vehicule
          ,  u.id_user
    FROM     t_transport AS t
       LEFT OUTER JOIN 
             t_users_transports AS u
          ON t.id = u.id_transport
    WHERE    u.id_user   = 1
          OR u.id_user   IS NULL
    ;
    Autre solution, pas supportée par tous les SGBD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT   t.id
          ,  t.vehicule
          ,  u.id_user
    FROM     t_transport AS t
       LEFT OUTER JOIN 
             t_users_transports AS u
          ON t.id = u.id_transport
          AND u.id_user   = 1
    ;

  3. #3
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    J'ai 1 doute sur la 1ere al1_24. Que se passe-t-il qd 1 véhicule n'est utilisé ni par personne, ni par l'utilisateur 1?
    Je pense que la seconde est mieux.
    [mode curieux]
    pas supportée par tous les SGBD :
    Aie! Tu peux citer des noms? (promis je dirais pas que c'est toi qui as balancé )
    [/mode curieux]

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    salut,

    La première requête proposée ne donne pas le résultat escompté. Elle ne mentionne pas les véhicules qui ne sont pas utilisés par l'utilisateur 1.

    Par contre, la deuxième donne exactement ce dont j'ai besoin.

    Merci.

    La question posée par TheLeadingEdge dépasse de loin mes compétences et le problème principal est résolu. Je modifie le thread comme résolu mais j'aimerais bien aussi savoir quels sgbd ne supportent pas cette syntaxe (ou sémantique je sais pas trop).

    Mille (1000) mercis

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 105
    Points : 28 397
    Points
    28 397
    Par défaut
    Je me souviens de résultats aléatoires retournés par MySql, il y a quelques années

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Essaye de t'en souvenir s'il te plaît.

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par al1_24
    Je me souviens de résultats aléatoires retournés par MySql, il y a quelques années
    Je ne sais pas ce que tu veux dire, mais la première requête ne peut pas marcher, le LEFT n'ajoutant des lignes que pour les véhicule n'ayant aucun user, et non pas "non utilisé par le user 1"

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

Discussions similaires

  1. [SP-2007] Copier une liste d'éléments sur un même site SharePoint WSS 3.0
    Par norton dans le forum SharePoint
    Réponses: 0
    Dernier message: 03/03/2015, 15h40
  2. Comment savoir si deux listes contiennent un même élément
    Par ahmadou_20 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 22/08/2014, 11h30
  3. affecter la même liste d'élément à plusieurs Listbox
    Par elombre dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/05/2009, 08h24
  4. [MySQL] Suppression d'une liste d'éléments
    Par parasol007 dans le forum Requêtes
    Réponses: 10
    Dernier message: 01/10/2008, 22h08
  5. [Forms] : liste d'éléments
    Par JuRu dans le forum Forms
    Réponses: 3
    Dernier message: 01/06/2004, 12h18

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