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 :

DELETE avec sous requete


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 66
    Points : 45
    Points
    45
    Par défaut DELETE avec sous requete
    C'est une requête de suppression que je veux lancer sur phpMyAdmin.
    (Version du client MySQL: 4.0.21
    phpMyAdmin - 2.8.0-rc1)
    Je veux supprimer toutes les candidatures aux missions d'une entreprise

    CANDIDATURE [idmission,...]
    MISSION[identreprise,idmission,...]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DELETE FROM CANDIDATURE 
    WHERE CANDIDATURE.idmission IN 
      (SELECT MISSION.idmission FROM MISSION WHERE 
        MISSION.identreprise=22)
    me renvoie
    #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT ENTREPRISE.idmission FROM ENTREPRISE WHERE ENTREPRISE.id

    Pourtant les requêtes prises indépendamment fonctionnent!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MISSION.idmission FROM MISSION WHERE MISSION.identreprise=22
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM CANDIDATURE 
    WHERE CANDIDATURE.idmission IN (3,4)
    Quel est le problème??

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonsoir,
    je n'ai eu aucun souci avec cette requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM `candidature` WHERE `idmission` IN (SELECT `idmission` FROM `mission` WHERE `identreprise` = 22)
    Cordialement,
    DaRiaN.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    salut!
    Je viens de copier coller ta réponse, mais çà ne veut pas marcher...
    çà me met la même erreur!
    Si quelqu'un a un élément de réponse

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Par contre, et je ne serais dire si cela a de l'importance dans votre cas, mais je travaille sur MySQL 5.1.22.

  5. #5
    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 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Ta version de MySQL n'accepte pas les sous-requêtes (il faut au minimum être en 4.1 pour ça).
    Essaie la synthaxe suivante, avec un peu de chance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DELETE c
    FROM candidature c
    INNER JOIN mission m ON c.idmission = m.idmission
    WHERE m.identreprise = 22
    ced

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Salut!!

    Et oui je pense que la requête ne marche pas à cause des problèmes de version...Si je pouvais modifier la version moi même je serai le premier à avoir mis à jour MySql.
    Le problème est que je fais un projet pour ma faculté et que la base est stocké sur un serveur de là bas...
    Donc je ne peux pas changer la version...C'est un peu la merde...De même ils sont encore en PHP4...
    Enfin bref, heureusement que vous êtes là pour me secourir!
    Je viens me rendre compte qu'on peut supprimer plusieurs tables à la fois avec des jointures. C'est magnifique!!! Je voulais supprimer l'entreprise avec les multiples tables concernées par l'entreprise!
    J'en apprends tous les jours!!
    Merci bien à tous
    Au fait pour que çà marche je dois faire exactement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DELETE CANDIDATURE
    FROM CANDIDATURE c
    INNER JOIN MISSION m ON c.idmission = m.idmission
    WHERE m.identreprise = 22
    Jvous montre la requete de suppression d'entreprise pour la beauté du geste...Maintenant que je ne dois plus en faire 15!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DELETE ENTREPRISE, CONTACT_ENTREPRISE, IDENTIFICATION, HISTORIQUE, DEMANDE_RECRUTEMENT, MISSION, CANDIDATURE
    FROM ENTREPRISE E
      INNER JOIN CONTACT_ENTREPRISE AS CE ON E.identreprise=CE.idcontact_entreprise
      INNER JOIN IDENTIFICATION AS I ON E.identreprise=I.ididentification
      LEFT JOIN HISTORIQUE AS H ON I.ididentification=H.ididentification
      LEFT JOIN DEMANDE_RECRUTEMENT AS DR ON E.identreprise=DR.identreprise
      LEFT JOIN MISSION AS M ON E.identreprise=M.identreprise
        LEFT JOIN CANDIDATURE AS C ON M.idmission=C.idmission
    WHERE E.identreprise=4

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

Discussions similaires

  1. Delete avec sous requetes qui retourne plusieurs resultats
    Par Biosox dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/07/2010, 14h55
  2. Delete distant avec sous requete local
    Par Sam 069 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/09/2007, 11h01
  3. Optimisation requete avec sous-requetes multiples
    Par gege.boubou dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/09/2005, 10h42
  4. DELETE avec sous-requête
    Par say dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/04/2005, 08h20
  5. INTERBASE: DELETE avec sous requete conditionnelle
    Par Papino dans le forum InterBase
    Réponses: 6
    Dernier message: 17/02/2005, 22h55

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