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 :

Erreur sur DELETE avec condition sur un DATETIME


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Points : 44
    Points
    44
    Par défaut Erreur sur DELETE avec condition sur un DATETIME
    Bonjour,

    J'exécute cette requête sous MySQL (via JDBC) mais je poste ici car j'aimerais avoir une syntaxe la plus standard possible pour pouvoir être exécutée sur tout SGBD.

    Je ne comprend pas ce problème car ce SELECT renvoie des lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT L.id_licence, L.derniere_activite
    FROM LICENCE L
    WHERE L.derniere_activite <= '2009-08-25 10:37:04.0';
     
    derniere_activite		id_licence
    -------------------------------------
    2009-08-25 09:21:48.0		1
    2009-08-25 09:21:57.0		2
    2009-08-25 09:22:31.0		3
    2009-08-25 10:00:24.0		6
    Mais la même requête avec un DELETE me dit ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DELETE
    FROM LICENCE L
    WHERE L.derniere_activite <= '2009-08-25 10:37:04.0';
     
    Erreur de syntaxe près de 'L WHERE L.derniere_activite <= '2009-08-25 10:37:04.0'' à la ligne 2
    J'ai loupé quelque chose sur les DELETE ou les DATETIME ?

    Merci.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Je pense que vous avez fait quelques erreurs lors de vos copiers collers (LICENCE, TABLE, un alias en L...) et comme il s'agit d'une erreur de syntaxe il n'est pas simple de vous aider.

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    1ère requête :
    2ème requête :
    Ce n'est donc pas la même requête !

    Et quand je vois le message d'erreur :
    Erreur de syntaxe près de 'L WHERE L.derniere_activite <= '2009-08-25 10:37:04.0'' à la ligne 2
    Je me dis qu'il fait suite à une autre requête puisque dans aucune des deux requêtes données dans ton message ne figure le texte 'L WHERE L.derniere_activite'.

    Bref, donne-nous la vraie requête qui déclenche l'erreur et on pourra peut-être t'aider.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    Oui pardon j'ai raté mes copier-collé de requêtes.

    J'ai édité mon premier messages avec les bonnes requêtes et erreur (et j'ai pris soin de retester avec ces codes).

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    D'après la doc officielle, si j'ai bien compris si vous utilisez un alias sur un nom de table il faut l'utiliser dans le DELETE :
    http://dev.mysql.com/doc/refman/5.0/en/delete.html

    Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM LICENCE
    WHERE derniere_activite <= '2009-08-25 10:37:04.0';
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE L
    FROM LICENCE L
    WHERE L.derniere_activite <= '2009-08-25 10:37:04.0';
    Cette dernière syntaxe me paraît propritétaire à MySQL je dirai.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    Ca fonctionne sans mettre d'alias effectivement. Je n'avais pas idée que les DELETE sous MySQL fonctionnait comme ça.

    Je n'ai pas besoin de l'alias (c'est une habitude d'en mettre partout), donc je vais l'enlever et cela devrait rester compatible avec les autres SGBD.

    Merci !

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

Discussions similaires

  1. [AC-2003] Bug sur requete avec condition sur case à cocher
    Par warrios dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 28/01/2015, 14h02
  2. Erreur de paramètre avec SQL sur Delphi
    Par ghan77 dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/01/2006, 13h30
  3. Jointure avec conditions sur plusieurs colonnes
    Par ben53 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 28/11/2005, 09h27
  4. update avec condition sur autre table
    Par allowen dans le forum Langage SQL
    Réponses: 5
    Dernier message: 01/04/2005, 15h02
  5. UPDATE avec condition sur d'autres tables
    Par guda dans le forum Langage SQL
    Réponses: 7
    Dernier message: 10/03/2005, 11h20

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