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 :

Collage de table


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 95
    Par défaut Collage de table
    Bonjour,

    j'ai 3 tables qui se présentent ainsi :

    applications { ID_application, Nom_application, Editeur_application, Version_application, ID_os, Commune ... }

    applis_salles {ID_appli_salle, ID_salle, ID_application, Etat_application... }

    os { ID_os, Nom_os }
    En gros, une application peut être installée dans une salle via la table applis_salles et une application est liée à un système d'exploitation de ma table os.

    Je veux afficher les applications qui ne sont pas installées dans une salle d' ID $ID_salle. Pour cela j'utilise la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT A.* 
    FROM applications A
    WHERE NOT EXISTS (
    				SELECT B.ID_application
    				FROM applis_salles B
    				WHERE B.ID_salle = $ID_salle
    	                        AND A.ID_application = B.ID_application
    )
    AND A.commune = 0
    Je voudrais coller au résultat que me renvoie cette requête le nom de l'os qui lui est associé en sachant que applications.ID_os peut être NULL et que je veux quand même afficher cette ligne.

    Cette requête m'affiche uniquement les applications possédant un ID_os :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT A.*, C.*
    FROM applications A, os C
    WHERE NOT EXISTS (
    				SELECT B.ID_application
    				FROM applis_salles B
    				WHERE B.ID_salle = $ID_salle
    	                        AND A.ID_application = B.ID_application
    )
    AND A.commune = 0
    AND C.ID_os = A.ID_os
    J'ai essayé vainement en ajoutant des OR dans la condition WHERE mais j'obtiens des doublons ou autres résultats farfelus.

    Ce que je veux obtenir est-il possible ? Si oui comment ?

    Merci d'avance.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 058
    Par défaut
    Bonjour,

    Autre requête pour afficher les applications qui ne sont pas dans une salle $ID_salle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT A.* 
    FROM applications A
    LEFT JOIN applis_salles B ON A.ID_application = B.ID_application AND B.ID_salle = $ID_salle
    WHERE B.ID_salle IS NULL
    Du coup, pour afficher l'OS de l'appli, il suffit de rajouter une jointure externe sur la table des OS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT A.*, C.* 
    FROM applications A
    LEFT JOIN applis_salles B ON A.ID_application = B.ID_application AND B.ID_salle = $ID_salle
    LEFT JOIN os C ON A.ID_os = C.ID_os
    WHERE B.ID_salle IS NULL
    Je n'ai pas testé, mais ça doit s'approcher de ce que tu cherches .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 95
    Par défaut
    Tout simplement parfait.

    Je dormirai moins bête ce soir.

    Merci beaucoup.

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

Discussions similaires

  1. Réparation table/entête endommagée
    Par tbesrour dans le forum Paradox
    Réponses: 15
    Dernier message: 27/11/2007, 10h42
  2. Réponses: 2
    Dernier message: 19/10/2007, 14h33
  3. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55
  4. Newbie......compilateur et table de caractères
    Par Cyberf dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 21/08/2002, 14h29
  5. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31

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