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

MySQL Discussion :

Requête SQL permettant de savoir si une entrée existe dans une autre table


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2022
    Messages : 5
    Par défaut Requête SQL permettant de savoir si une entrée existe dans une autre table
    Bonjour,

    Je suis débutant en SQL et j'aimerais mettre en place une requête qui permet d'ajouter une colonne "marqueur" dans la "table_primaire" qui permet d'indiquer si chaque ligne de cette table existe dans la "table_1" ou la "table_2".
    Je ne sais pas si c'est possible de faire ça et je ne sais pas comment m'y prendre. Merci d'avance pour vos réponses.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 446
    Par défaut
    Bonjour,
    C'est tout à fait possible, mais je ne pense pas que ce soit une bonne idée.
    Avec cette méthode tu cours le risque d'avoir des données qui ne sont pas à jour.

    Cela étant dit, tu peux le faire avec une requête de ce genre:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    update TablePrimaire
    set lacolonne = true
    where exists (select 1 from ...)

    Il faut juste définir ce qui permet de savoir si une ligne de la "Table_primaire" est dans la "Table_1", bref ce qui se trouve dans la sous requête, après le FROM.

    Une autre méthode, qui se base sur une jointure:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    update TablePrimaire
    inner join Table_1 on ...
    set laColonne = true

    Ici aussi il faut définir le critère de jointure entre TablePrimaire et Table_1.

    Tu as quelques exemples ici.

    Tatayo.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2022
    Messages : 5
    Par défaut
    Merci pour la réponse, est-il possible de faire en sorte que dans cette colonne au lieu d'avoir des true ou des false, j'ai :
    - principale si ça appartient dans la table_1
    - secondaire si c'est dans la table_2

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 446
    Par défaut
    Oui, il suffit de modifier la partie UPDATE de la requête, et de faire 2 jointures au lieu d'une seule:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    update TablePrimaire
    left outer join table_1 on ...
    left outer join Table_2 on ...
    set laColonne = (case when table_1.id is not null then 'principal' when table_2.id is not null then 'secondaire' end)
    from TablePrimaire
    where table_1.id is not null or table_2.id is not null

    Il faut peut-être définir ici une "priorité", si la ligne de TablePrimaire se trouve dans les deux tables.
    Dans mon exemple c'est Table_1 qui est "prioritaire".
    J'ai mis des jointures externes, pour éviter " l'hypothèse du monde clos ".

    Tatayo.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2022
    Messages : 5
    Par défaut
    Dernière petite question, est-il possible de faire tout cela sans UPDATE, c'est à dire directement à la création de la table_primaire ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 446
    Par défaut
    "A la création de la table" stricto sensu non, mais une fois créée tu peux la remplir avec une requête INSERT INTO SELECT.

    Tatayo.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2022
    Messages : 5
    Par défaut
    Super c'est exactement ce que je cherche à faire. Du coup la requête au dessus avec la syntaxe d'un SELECT donnerait quoi ?

  8. #8
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 446
    Par défaut
    C'est simple:
    1. Tu enlèves la ligne UPDATE
    2. Tu ajoutes une ligne INSERT INTO
    3. Tu ajoutes une ligne SELECT
    4. Tu remets dans le bon ordre les lignes FROM et LEFT OUTER JOIN

    Et voilà.
    Il faut que les colonnes présentes dans la ligne INSERT INTO correspondent à celles du SELECT.
    C'est bien expliqué dans le lien de mon précédent message.

    Je te laisse creuser un peu le sujet (c'est aussi comme ça qu'on apprend).
    En cas de blocage tu nous montres ta requête, et on te dira ce qui ne va pas.

    Tatayo.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2022
    Messages : 5
    Par défaut
    Merci beaucoup pour votre aide, finalement en creusant j'ai réussi à faire ce je voulais. C'est en faisant qu'on apprend ! Passez une bonne fin de journée

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/06/2020, 10h36
  2. Réponses: 2
    Dernier message: 29/05/2011, 22h15
  3. Requête SQL sur le résultat d'une autre requête
    Par rec82 dans le forum Bases de données
    Réponses: 10
    Dernier message: 12/12/2008, 17h40
  4. [SQL] select en fonction d'une autre table
    Par rduvrac dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/03/2008, 13h45
  5. Requête de mise à jour à partir d'une autre table
    Par clemced dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 26/02/2008, 11h58

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