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 :

Trouver des lignes orphelines


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Points : 120
    Points
    120
    Par défaut Trouver des lignes orphelines
    Bonjour,

    Voici mon problème

    J'ai 2 tables : table1 et table2

    Un enregistrement de la table1 peut avoir n enregistrements dans la table2. Pour se faire j'ai un champ table1_id dans la table2.

    J'ai un script php pour supprimer des enregistrements de la table1 et les enregistrements dépendant de la table2 mais ce script n'a pas marché du premier coup...

    Je me retrouve donc avec des enregistrements dans la table2 "orphelins", c'est à dire que table2.table1_id est renseigné avec un id inexistant.

    Je cherche donc a faire UNE seule requete SQL pour identifier ces enregistrement de la table2, et je me prends un peu les pieds dans le tapis avec la jointure...

    D'avance merci !

  2. #2
    Membre averti Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Points : 332
    Points
    332
    Par défaut
    slt...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DELETE FROM table1,table2 
    USING table1,table2
    WHERE table1.id =ton_id AND
        table2.table1_id = ton_id

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par jota5450 Voir le message
    slt...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DELETE FROM table1,table2 
    USING table1,table2
    WHERE table1.id =ton_id AND
        table2.table1_id = ton_id
    Salut !

    Cela suppose que je connais les id de table1 qui n'existe plus non ? or c'est ce que je cherche a savoir

    En gros ce que je cherche a faire

    SELECT * FROM table2 WHERE table2.table1_id NE CORRESPOND A AUCUNE ID de table1

  4. #4
    Membre averti Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Points : 332
    Points
    332
    Par défaut
    slt..

    SELECT * FROM table2 WHERE table2.table1_id NE CORRESPOND A AUCUNE ID de table1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM table2 WHERE table2.table1_id not in(select ID from table1)
    ps:
    J'ai un script php pour supprimer des enregistrements de la table1 et les enregistrements dépendant de la table2 mais ce script n'a pas marché du premier coup...
    J´ai pas lu ca... je croyais que tu voulais le code pour suprimer dans les 2 tables...

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Pourquoi ne pas avoir mis de clés etrangeres avec l'attribut ondeletecascade?

    cela t'éviterais de faire un script par la suite..

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par boo64 Voir le message
    Pourquoi ne pas avoir mis de clés etrangeres avec l'attribut ondeletecascade?

    cela t'éviterais de faire un script par la suite..

    Parce que je sais meme pas ce que c'est je vais donc m'empresser de me documenter !

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par jota5450 Voir le message
    slt..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM table2 WHERE table2.table1_id not in(select ID from table1)
    nickel merci !!

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

Discussions similaires

  1. Trouver des noms sur une meme ligne ?
    Par Gorane dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/01/2012, 18h51
  2. Réponses: 2
    Dernier message: 16/09/2010, 18h29
  3. Réponses: 17
    Dernier message: 09/02/2010, 16h22
  4. Trouver une ligne contenant des valeurs
    Par John81 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/09/2008, 21h44
  5. effacer des lignes orphelines
    Par cyrille37 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/10/2007, 16h08

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