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 :

Sous requête avec plusieurs retours


Sujet :

Langage SQL

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut Sous requête avec plusieurs retours
    Salut à tous,

    Je cherche à récupérer dans une table tous les enregistrements dont la date est passée de 30 jours.

    J'ai donc fait quelque chose comme celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT id FROM matable
    WHERE DATEDIFF('2007-10-10',(SELECT date FROM matable))>30;
    Mais ma sous requete me retourne plusieurs enregistrement (tous en fait ^^ ).
    Comment puis je arriver à ce que je souhaite ?

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Points : 375
    Points
    375
    Par défaut
    Tu te complique la vie pour pas grand chose la ! pourquoi fais tu une sous requête dans ton datediff ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT id FROM matable
    WHERE DATEDIFF(getDate() , matable.date)>30;
    ps : getdate() est la fonction de ton SGBD pour récupérer la date du jour car tu n'a pas indiqué sur quel SGBD tu travailles

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    En effet c'est nettement plus simple ainsi

    Si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT id FROM matable
    WHERE DATEDIFF(CURDATE() , matable.date)>30;
    marche très bien , en revanche je n'arrive pas à faire la même chose pour un delete.
    Une solution ?

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Points : 375
    Points
    375
    Par défaut
    Normalement cela devrait marcher aussi pour le delete

    Affiche ta requête de delete pour que l'on puisse t'aider plus précisemment

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    Alors ma requete est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM matable m WHERE DATEDIFF(CURDATE(),m.date)>30;
    Précision je suis sous Mysql

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 480
    Points
    28 480
    Par défaut
    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM matable 
    WHERE DATEDIFF(CURDATE(), date) > 30;

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    En effet de cette manière ca marche.
    Donc pas de raccourcis dans les DELETE , c'est noté

    merci

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 480
    Points
    28 480
    Par défaut
    Citation Envoyé par grunk Voir le message
    Donc pas de raccourcis dans les DELETE , c'est noté
    Ce ne sont pas des raccourcis mais des alias !

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

Discussions similaires

  1. Sous-requête avec plusieurs résultats souhaités
    Par devlm dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/08/2014, 13h02
  2. sous requête avec plusieurs lignes
    Par souarit dans le forum Bases de données
    Réponses: 0
    Dernier message: 09/02/2009, 02h18
  3. Requête et sous requête avec SELECT et UPDATE
    Par Véronique75ca dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/06/2006, 22h25
  4. une requête avec plusieurs INNER JOIN, cmt faire ?
    Par elhosni dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/01/2006, 18h55
  5. [UPDATE]Sous-requetes avec plusieurs nuplets
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/07/2005, 19h28

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