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

VB.NET Discussion :

delete from table1 left join table2 [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 338
    Par défaut delete from table1 left join table2
    bonjour,
    je voudrais supprimer les données d'une table parent n'ayant pas de fils dans la table fille. voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Private Sub ExecuteLDD(ByVal sqlSTR As String)
            sqlCMD = New SqlCommand
            sqlCONN.Open()
            sqlCMD.Connection = sqlCONN
            sqlCMD.CommandText = sqlSTR
            sqlCMD.ExecuteNonQuery()
            sqlCONN.Close()
    End Sub
     
    Private Sub z_journal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ExecuteLDD("DELETE FROM z_JOURNAL LEFT JOIN z_MODIFICATION_JOURNAL ON z_JOURNAL.NumeroJournal = z_MODIFICATION_JOURNAL.NumeroJournal WHERE (z_MODIFICATION_JOURNAL.NumeroJournal IS NULL)")
    End Sub
    à l'exécution, il me ramène l'erreur suivante:

    Incorrect syntax near the keyword 'LEFT'.
    quelqu'un a-t-il une idée de ce que c'est?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    met un breakpoint quand tu vas executer la requete et essaye la dans ton sgbd

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Bonjour,

    on ne peut pas mettre de jointure dans un delete en SQL

    Tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Delete from matable where mon_id in (select mes_ID_a_delete from matableA left join matableB where ma_condition)

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 338
    Par défaut
    je lance la requête suivante dans le SGBD même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM z_JOURNAL where NumeroJournal in (select * from z_journal LEFT JOIN z_MODIFICATION_JOURNAL ON z_JOURNAL.NumeroJournal = z_MODIFICATION_JOURNAL.NumeroJournal WHERE (z_MODIFICATION_JOURNAL.NumeroJournal IS NULL))
    il me ramène le message d'erreur suivant à l'exécution

    Msg*116, Niveau*16, État*1, Ligne*1
    Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
    qu'est ce que cela signifie?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    NumeroJournal in (select * from z_journal )

    tu compare NumeroJournal avec une liste de champs

    faut remplacer * par NumeroJournal ou alors utiliser l'expression Exist à la place de In

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 338
    Par défaut
    merci à tous
    la meilleur formule était

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM z_JOURNAL FROM z_JOURNAL LEFT OUTER JOIN z_MODIFICATION_JOURNAL ON z_JOURNAL.NumeroJournal = z_MODIFICATION_JOURNAL.NumeroJournal WHERE (z_MODIFICATION_JOURNAL.NumeroJournal IS NULL)
    ça marche.

    A bientôt

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

Discussions similaires

  1. FROM DUAL LEFT JOIN
    Par Sergejack dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/05/2010, 10h08
  2. delete from table1 where rien dans table2
    Par tofito dans le forum Débuter
    Réponses: 3
    Dernier message: 03/12/2009, 17h14
  3. SELECT * INTO TABLE2 FROM TABLE1
    Par helmis dans le forum PL/SQL
    Réponses: 7
    Dernier message: 08/08/2008, 17h09
  4. DELETE FROM Table_a .. JOIN (SELECT Table_a) ?
    Par ctobini dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/02/2008, 17h43

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