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

Langage SQL Discussion :

Les delete n'aiment pas les alias?


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de LineLe
    Inscrit en
    Septembre 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 285
    Points : 246
    Points
    246
    Par défaut Les delete n'aiment pas les alias?
    Bonjour je souhaite supprimer des champs avec cette requete-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DELETE FROM Combinaison as combi1, correspondre as corr1, constituer as const1
    WHERE 	combi1.valeurcombinaison = corr1.valeurcombinaison
    	AND combi1.valeurcombinaison = const1.valeurcombinaison
    	AND corr1.IdItem = 14
    	AND combi1.valeurcombinaison in 
    				(SELECT corr2.valeurcombinaison FROM correspondre as corr2
    				GROUP BY corr2.valeurcombinaison having count(*)=1);
    et voila qu'on me dit ceci :

    Serveur*: Msg 156, Niveau 15, État 1, Ligne 1
    Syntaxe incorrecte vers le mot clé 'as'.
    je ne comprends pas trop pourquoi. Quelqu'un peut m'expliquer mon erreur?

    PS: je travaille sur SQL Server 2000

  2. #2
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    Le DELETE n'accepte qu'une seule table dans leur clause FROM

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM table [WHERE condition]

  3. #3
    Membre actif Avatar de LineLe
    Inscrit en
    Septembre 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 285
    Points : 246
    Points
    246
    Par défaut
    Pourtant j'avais trouvé ce lien : http://www.ianywhere.com/developer/p...9/00000386.htm

    C'est pas possible de faire des delete en cascade??

  4. #4
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    Ton lien présente la syntaxe DELETE pour le SGBDR Sybase ASA. Pour SQL Server, je te conseille plutôt de te baser sur la doc MSDN :
    http://msdn.microsoft.com/library/de...de-dz_9lut.asp

    Concernant les delete en cascade, il existe des solutions : en utilisant l'option ON DELETE CASCADE que l'on peut spécifier au niveau des clés étrangères, ou en procédant par trigger, par exemple.

  5. #5
    Membre actif Avatar de LineLe
    Inscrit en
    Septembre 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 285
    Points : 246
    Points
    246
    Par défaut
    Citation Envoyé par Quentin
    Ton lien présente la syntaxe DELETE pour le SGBDR Sybase ASA. Pour SQL Server, je te conseille plutôt de te baser sur la doc MSDN :
    http://msdn.microsoft.com/library/de...de-dz_9lut.asp

    Concernant les delete en cascade, il existe des solutions : en utilisant l'option ON DELETE CASCADE que l'on peut spécifier au niveau des clés étrangères, ou en procédant par trigger, par exemple.
    snif

    je vais creuser du cote de 'on delete cascade'... moi qui etait toute fiere de ma requete....

    Merci

  6. #6
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    un modo m'a dit (sur ce même forum) que le ON DELETE/UPDATE CASCADE était moins performant que si toi tu supprimes avec un triggers par exemple ou une procédure stockée

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Regarde bien la syntaxe de Sybase ASA. C'est la même que pour MS SQL Server.
    Il suffit de la lire :
    Il y a 2 clauses FROM. La première spécifie la table dans laquelle la suppresion s'effectue. On l'apelle table cible.
    La seconde clause FROM permet de joindre la table cible avec d'autres tables.

    Mais aucun ordre de mise à jour SQL ne permet de cibler simultanément plusieurs tables, parce que, pour faire cela il faut le faire dans un ordre précis, du fait de la dépendance des tables à cause de l'intégrité référentielle.

    Donc :
    soit utiliser l'IR avec du DELETE CASCADE
    soit faire un code procédural avec une transaction (trigger, procédure, UDF).

    A +

  8. #8
    Membre actif Avatar de LineLe
    Inscrit en
    Septembre 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 285
    Points : 246
    Points
    246
    Par défaut
    Bonjour!
    Merci pour vos reponses, finalement j'ai opté pour le delete cascade. deux des trois tables "incriminées" etant des associations dependant de la premiere, le delete cascade est bien adapte et plus facile a mettre en oeuvre

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 23/09/2009, 11h02
  2. [PHP 5.2] Comment supprimer les balise php mais pas les html
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 20/05/2009, 00h28
  3. Réponses: 2
    Dernier message: 07/10/2008, 12h57
  4. vb2005 les contrôls ne sont pas les memes
    Par salrouge dans le forum Windows Forms
    Réponses: 5
    Dernier message: 02/05/2007, 12h51
  5. Réponses: 23
    Dernier message: 08/12/2006, 14h59

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