Pb de tri avec une requete. [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 24-02-2003 à 00:00:59
Tu devrais pouvoir t'en sortir ainsi, si j'ai bien compris ce que tu veux faire :
SELECT t1.id_fiche FROM Fiche AS t1, historique AS t2 WHERE t1.id_fiche = t2.id_fiche ORDER BY t1.id_fiche, t1.caractéritiques, t2.Etat_fiche; |
Marsh Posté le 24-02-2003 à 01:12:13
Euh, non, en fait, c'est pas ca:
le fait de trier par n° de fiche et principales caractéristiques, ca, c'est OK.
maintenant je veux simplement trier par état_fiche de l'historique. le problème vient du fait que dans l'historique, une fiche peut avoir plusieurs états, et comme je veux l'état en cours, il faut prendre la ligne ou la date est la plus récente.
Voici ce que j'ai actuellement, et qui ne marche pas:
|
a mon avis, ce qui chie, c'est le WHERE h.date=datemax
mais je vois pas comment le remplacer...
une idée quelqu'un???
Marsh Posté le 24-02-2003 à 21:03:28
aplc a écrit : Euh, non, en fait, c'est pas ca:
|
bon, je débute en SQL, mais je te propose quand meme ca:
|
Marsh Posté le 25-02-2003 à 02:05:53
Merci pour ta réponse, mais j'crois pas que ca puisse marcher: mysql ne permet pas les sous requetes imbriquées, à moins que je me trompe...
Marsh Posté le 25-02-2003 à 04:39:08
aplc a écrit : Merci pour ta réponse, mais j'crois pas que ca puisse marcher: mysql ne permet pas les sous requetes imbriquées, à moins que je me trompe... |
Tu te trompes ...
C'est tellement basique comme truc que cela me ferai vraiment sursauter...
Et surtout ca evite les joins merdiques plutot gros en memoire...
Marsh Posté le 25-02-2003 à 05:09:50
Tu es quasiment obligé de faire ca en deux étapes (de facon explicite ou implicite) :
1/ Déterminer la dernière date pour chaque fiche
2/ Faire la jointure
Marsh Posté le 25-02-2003 à 12:12:17
tetedeiench a écrit : |
J'espère que le plafond est pas trop haut chez toi, sinon tu vas choper une belle bosse
Même MySQL 4 ne gère pas les subselects. Il va encore falloir attendre encore un peu : http://www.mysql.com/press/release_2003_05.html
Marsh Posté le 25-02-2003 à 15:47:42
arg, c bien ce ki me semblait...
alors seule une méthode nécessitant 2 requete peut faire l'affaire?
a la limite, ca irait si j'avais que quelques enregistrements, mais si la table devient plus importante, ca va en faire des requetes... ;-(
Marsh Posté le 25-02-2003 à 19:31:00
aplc a écrit : Merci pour ta réponse, mais j'crois pas que ca puisse marcher: mysql ne permet pas les sous requetes imbriquées, à moins que je me trompe... |
ha, je savais pas
j'aurais au moins apris ca aujourd'hui
Marsh Posté le 06-03-2003 à 21:05:28
juste par curiosité, t'as essayé de changer le WHERE en HAVING (mais j'ai peu d'espoir sans subselect, 4.1 est ton ami )
Marsh Posté le 06-03-2003 à 21:52:43
Y a peut être moyen de s'inspirer de ce qui se fait ici
http://www.mysql.com/doc/en/exampl [...] p-row.html
(attention, c'est pas simple )
Marsh Posté le 06-03-2003 à 23:59:50
> Joce
En effet, le Having ne marche pô mieux...
>MrBebert
Merci pour ton lien... ca a l'air d'être ca... la solution...
je testerai ça ce weekend... (même si ça a l'air plutôt moche )
Marsh Posté le 23-02-2003 à 23:18:52
Voici la structure de ma table:
Fiche historique
------- ----------
id_fiche id_fiche
... Etat_fiche
caractéritiques date
diverses ...
...
Dans ma requete principale, j'affiche l'ensemble des fiches, avec la possibilité de trier le résultat (parametre $tri).
je trie donc par n° de fiche, puis par les principales caractéristiques.
Je voudrais pouvoir trier le résultat par le dernier état de la fiche, visible dans la table historique.
Quelqu'un aurait il une idée? (je tourne en rond depuis hier soir ... )