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 PHP Discussion :

[Tableaux] Pb pour afficher uniquement les enregistrement concernés.


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 97
    Points : 64
    Points
    64
    Par défaut [Tableaux] Pb pour afficher uniquement les enregistrement concernés.
    Bonjour ,

    voila j'ai une table

    donnée_prof
    ------------
    id_donnee, smallint, auto incrementé ,clé primaire
    prof varchar
    hr float
    ------------
    il y a 4 entrée dans cette table:

    1 | 807 | 4
    5 | 1086 | 3
    7 | 806 | 4
    9 | 806 | 2.5

    ----------------

    Je souhaiterais, en fesant une requete sql, n'afficher que ceci:

    1 | 807 | 4
    5 | 1086 | 3
    9 | 806 | 2.5

    ----------------

    voici ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM donnée_prof, professeurs WHERE donnée_prof.prof=professeurs.id_prof AND donnée_prof.id_etab='$Num_établissement'
    cette requete m'affiche tous ce qu'il y a dans la table :
    comment lui dire que je veux la derniere ligne correspondant au prof afin d'avoir :


    1 | 807 | 4
    5 | 1086 | 3
    9 | 806 | 2.5

    ----------------

    je recherche du coté de DISTINC , qu'en pensez vous ?

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Je pense qu'il n'y a pas de rapport avec PHP et que c'est unn problème SQL donc ce n'est pas le bon forum.

    Peut-être qu'il faut effectivement jouer avec DISTINCT et/ou avec ORDER je ne sais pas...

  3. #3
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    En effet, ce n'est pas le bon forum, mais voici quand même une réponse.

    Le distinct n'y fera pas grand chose tout seul, il faut faire aussi, selon moi, une sous-requête du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT DISTINCT * 
    FROM donnée_prof dp, professeurs 
    WHERE donnée_prof.prof=professeurs.id_prof 
    AND donnée_prof.id_etab='$Num_établissement'
    AND id_donnee = (SELECT MAX(id_donnee)
                                      FROM donnee_prof dp_r
                                      WHERE dp.id_donnee = dp_r.id_donnee)
    Ce qui veut dire que l'on sélectionne, pour chaque donnee, la dernière insérée pour le prof en cours.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    hm, merci d'avoir répondu aussi vite , cependant je crois que la version de mysql que j'utilise ets la version 3.23.39, et je crois que les requetes imbriquées ne sont pas prise en compte :

    j'ai testé ta requete dans mysql et voici ce quil me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Erreur
     
    requête SQL :  
     
    SELECT DISTINCT * 
    FROM donnée_prof , professeurs 
    WHERE donnée_prof.prof=professeurs.id_prof 
    AND donnée_prof.id_etab='00811'
    AND id_donnee = (SELECT MAX(id_donnee) FROM donnee_prof dp_r WHERE dp.id_donnee = dp_r.id_donnee) LIMIT 0, 30
     
    MySQL a répondu:
     
     
    You have an error in your SQL syntax near 'SELECT MAX(id_donnee) FROM donnee_prof dp_r WHERE dp.id_donnee =
    Si c'est le cas, ya til un moyen de faire sans passer par les requetes imbriqués ?
    sinon je dois migrer

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    a y est ,j'ai trouvé, il suffisait de faire un GROUP BY sur prof et de mettre min(hr) ainsi que MAX(id_donnee)
    la requete donne quelque chose de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     
    SELECT max(id_donnee),Nom, id_etab,prof, min(hr) FROM donnée_prof,professeurs WHERE donnée_prof.prof=professeurs.id_prof AND donnée_prof.id_etab='$Num_établissement' GROUP BY prof
    merci à tous pour m'avoir aiguillé sur la bonne voie

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/01/2014, 16h20
  2. Réponses: 2
    Dernier message: 05/07/2012, 17h16
  3. Réponses: 9
    Dernier message: 14/01/2011, 10h32
  4. Réponses: 3
    Dernier message: 18/02/2009, 10h00
  5. Quel webpart pour afficher uniquement les sous-sites d'un site?
    Par gracouille dans le forum SharePoint
    Réponses: 0
    Dernier message: 02/06/2008, 19h37

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