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 :

Difficulté à créer une requette


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Par défaut Difficulté à créer une requette
    Bonjour à tous,

    je suis nouveau sur ce forum,

    je viens chercher une solution ou une piste pour la création d'une requette MySQL qui dépasse mes compétences et me fait m'arracher les cheveux...

    La requette concerne qu'une seule table contenant les champs suivants :
    id, date, etat.

    Je cherche à sortir tous les enregistrements pour lequels etat=1 et où il y a au moins 2 enregistrements où etat=2 pour une même date.

    exemple (je donne l'année seule pour plus de simplicité, c'est un timestamp MySQL en fait dans date) :
    id date etat
    1 2008 2
    2 2008 1
    3 2008 1
    4 2008 2
    5 2007 1
    6 2007 1
    7 2007 2
    8 2006 2
    9 2006 2
    10 2005 1
    resultat : la requette ne doit sortir que les enregistrements id=2 et id=3

    J'ai essayé avec des requettes imbriquées en passant le paramètre date d'une requette à l'autre avec une variable, en utilisant count, mais j'ai des résultats totalement incohérents (plutot même qui n'ont rien à voir... ).

    Merci par avance pour votre aide précieuse.

  2. #2
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Bonjour et bienvenu,

    où il y a au moins 2 enregistrements
    Par etats ?

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 063
    Par défaut
    Bonjour,

    Petite remarque tout d'abord : il vaut mieux éviter d'utiliser des mots-clefs de MySQL comme nom de champ. Or, "date" est un mot-clef.

    Voilà la requête que tu cherches :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT id
    FROM ma_table t1
    INNER JOIN
    (
      SELECT date
      FROM ma_table
      WHERE etat = 2
      GROUP BY date
      HAVING COUNT(*) >= 2
    ) AS t2 ON t1.date = t2.date
    WHERE t1.etat = 1
    Petite explication de test : la sous-requête liste les dates pour lesquelles on a au moins 2 id avec un état à 2.
    En faisant une jointure par date entre cette sous-requête et ta table, et ne gardant que les etat 1, on obtient ce que tu souhaites...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Par défaut
    Bonjour,

    désolé, je n'ai pas eu le temps de vous répondre avant.

    Merci pour vos réponses si rapides et précises Ced et Kazou.

    C'est tout à fait ce que je cherchais ! De plus j'ai bien assimilé le fonctionnement, je vais donc pourvoir appliquer ce principe sur d'autre requêtes.

    Argh, oui date est un mot-clé ... Il ne me reste plus qu'à éditer la base (facile) et changer toutes mes fonctions/procédures php (interminable). Le pire c'est que le serveur est en production et le site repose fortement sur cette fameuse date . Je vais tâcher de corriger cela plus tard.

    Sinon pour la requette ça parait tellement logique maintenant, mais je n'aurai jamais réussi sans votre aide.

    A bientôt et encore merci.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/02/2010, 12h27
  2. créer une colonne dans le résultat d'une requette
    Par timal78 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/07/2007, 10h21
  3. Difficulté à créer une JApplet.
    Par samlesu dans le forum Applets
    Réponses: 4
    Dernier message: 07/06/2007, 20h35
  4. Récupérer l'id créer lorsd d'une requette insert into
    Par Death83 dans le forum Requêtes
    Réponses: 15
    Dernier message: 21/12/2005, 15h25

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