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 requet inmbriqué possible ?


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Par défaut Delete avec requet inmbriqué possible ?
    Bonjour,

    J'ai une table comme si dessous et je voulais savoir si grace a une requete imbirqué je pouvais supprimer tous champ avec le meme id commun ?
    Ou faut il que je passe obligatoirement par une boucle en php pour supprimer chaque ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ID    TEXTE COMMUN
    1      blaaa        3
    2      blooo        3
    3      bliiiiiii         4
    4      bluuu        3
     
     
    DELETE FROM TEST WHERE TEST.ID IN (SELECT ID FROM TEST WHERE COMMUN = 50)
    Merci a vous.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Tu peux passer par une table temporaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TEMPORARY TABLE tmp
    SELECT ID
    FROM TEST
    WHERE COMMUN = 50;
     
    DELETE FROM TEST
    WHERE ID IN (
      SELECT ID
      FROM tmp
    )
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre éclairé Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Par défaut
    Juste une question pour savoir si il y a 3000 ligne a effacer ca plantera pas la base car j'ai essayé avec une boucle pour supprimer ligne par ligne et ca a beugué.

    Merci a toi.

  4. #4
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    J'ai pas bien compris pourquoi tu voudrais utiliser une table temporaire

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Shandler Voir le message
    Juste une question pour savoir si il y a 3000 ligne a effacer ca plantera pas la base car j'ai essayé avec une boucle pour supprimer ligne par ligne et ca a beugué.
    Qu'est-ce qui a buggé ?
    C'est peut-être un problème de timeout.
    3000 DELETE 1 ligne sont plus lents qu'un seul DELETE de 3000 lignes.
    D'ailleurs, la boucle est faite avec quoi ? PHP ? C'est alors un problème de timeout PHP peut-être ?

    Bref beaucoup de suppositions parce que pas assez de précisions dans l'exposé du problème.

    Citation Envoyé par Xunil
    J'ai pas bien compris pourquoi tu voudrais utiliser une table temporaire
    Sauf erreur de ma part, tu ne peux pas faire un DELETE avec une sous requête qui porte sur la même table.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Sauf erreur de ma part, tu ne peux pas faire un DELETE avec une sous requête qui porte sur la même table.
    De fait, sauf mauvaise exposition du problème, je partage l'étonnement de Xunil.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM TEST
    WHERE COMMUN = 50
    me semble amplement faire l'affaire.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    C'est vrai !
    Pourquoi faire simple quand on peut faire compliqué ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [MySQL] Requete DELETE avec timestamp
    Par pony99 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/01/2010, 15h11
  2. Requete Delete avec PreparedStatement
    Par aminoss007 dans le forum JDBC
    Réponses: 5
    Dernier message: 17/04/2009, 15h21
  3. DELETE avec sous requete
    Par tinmarbusir dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/02/2008, 00h54
  4. Pb avec requete delete
    Par FamiDoo dans le forum ASP.NET
    Réponses: 8
    Dernier message: 30/08/2007, 16h04
  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