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 et SQL. Discussion :

Requête suppression sur 3 tables


Sujet :

Requêtes et SQL.

  1. #1
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 576
    Points : 2 554
    Points
    2 554
    Par défaut Requête suppression sur 3 tables
    Bonsoir à tous,

    J'ai une table Bordereaux avec un champ BE
    J'ai également deux tables nommées Bordereaux Sites et Bordereaux Chantier avec respectivement les champs BE Sites et BE Chantier.

    Je voudrais créer une requête suppression qui supprimerait les BE de la table Bordereaux si ils ne sont pas existant dans les 2 tables Bordereaux Sites ET Bordereaux Chantier.

    J'ai essayer de passer par les requêtes de non-concordance puis une troisième requête suppression, mais j'arrive assez vite à une usine à gaz.

    La solution doit être limpide et je passe sûrement à côté.

    Merci de votre aide.
    PS: Oups!! J'aurais dû mettre cette question dans le fil REQUETE... Désolé.

    Curt

  2. #2
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut
    Quelle est la relation entre les trois tables?

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE B.BE, BC.[BE Chantier], BS.[BE Sites]
    FROM (Bordereaux AS B LEFT JOIN [Bordereaux Chantier] AS BC ON B.BE = BC.[BE Chantier]) LEFT JOIN [Bordereaux Sites] AS BS ON B.BE = BS.[BE Sites]
    WHERE (((BC.[BE Chantier]) Is Null) AND ((BS.[BE Sites]) Is Null));

  4. #4
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 576
    Points : 2 554
    Points
    2 554
    Par défaut
    Bonjour Vodiem et merci d'avoir répondu.

    Ça ne fonctionne pas. De plus, j'ai simplifié le problème.
    Donc on reprend tout :

    J'ai une table [BORDEREAU ENVOI] contenant le champ [NUMERO BE]
    J'ai une table [INDICES] contenant les champs [N° BE SITE] et [N° BE CHANTIER]

    La question est la même : Je voudrais faire une requête suppression supprimant le champ [NUMERO BE] de la table [BORDEREAU ENVOI] à condition que la valeur de [BORDEREAU ENVOI].[NUMERO BE] ne soit ni dans le champ [INDICES].[N° BE SITE] ET ni dans le champ [INDICES].[N° BE CHANTIER]

    Facile dans le texte, un peu moins dans la pratique.

    Bonne journée.

    Curt

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    zut!
    c'est ca faire confiance au assistant. ah les traîtres...
    il fallait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELETE Bordereaux.BE
    FROM Bordereaux
    WHERE Bordereaux.BE IN
    (
    SELECT B.BE
    FROM (Bordereaux AS B LEFT JOIN [Bordereaux Chantier] AS BC ON B.BE=BC.[BE Chantier]) LEFT JOIN [Bordereaux Sites] AS BS ON B.BE=BS.[BE Sites]
    WHERE (((BC.[BE Chantier]) Is Null) AND ((BS.[BE Sites]) Is Null))
    );
    voilà pour la nouvelle structure (cette fois sans assistant )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    delete be.[numero be] from [bordereau envoi] be
    where not ((be.[numero be] in (select [n° be site] from indices where [n° be site] is not null)) and (be.[numero be] in (select [n° be chantier] from indices where [n° be chantier] is not null)))

  6. #6
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 576
    Points : 2 554
    Points
    2 554
    Par défaut
    Re-merci...
    mais le résultat affiché n'est pas le bon.

    La requête me renvoi les bordereaux non utilisés soit sur site soit sur chantier alors qu'il faut afficher les bordereaux non utilisés sur les 2 sites. (en clair : Fonction ET au lieu de OU).

    Désolé d'insister.... mais je tourne en rond !!!

    Merci encore.

    Curt

  7. #7
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut

    on me l'a fait pas deux fois...

    la requete renvoie les be s'il ne sont présent dans sites et chantier.

  8. #8
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 576
    Points : 2 554
    Points
    2 554
    Par défaut


    effectivement, ça fonctionne.... j'ai été un peu vite !!!

    Merci et bonne journée.

    Curt

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

Discussions similaires

  1. [SQL] requêtes SQL sur plusieurs tables
    Par zahiton dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/11/2005, 16h32
  2. suppression sur plusieurs tables
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/06/2005, 11h46
  3. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 19h05
  4. Requête complexe sur plusieurs table
    Par DenPro dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2003, 17h50
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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