Auteur Sujet: [sql] Problème...  (Lu 1382 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Robinson

  • Connaisseur
  • ***
  • Messages: 271
[sql] Problème...
« le: 25 mars 2004 à 01:49:02 »
J'ai une table avec plusieurs champs dont les champs :

champs1 : prend comme valeur 1,2,3 ou 4
champs2 : date

Je dois pouvoir récupérer :
- l'enregistrement où champs2 est max et où champs1 = 1
- l'enregistrement où champs2 est max et où champs1 = 2
- l'enregistrement où champs2 est max et où champs1 = 3
- l'enregistrement où champs2 est max et où champs1 = 4

En une seule requête...

En 4 requetes c facile :
SELECT * FROM table WHERE champs1 = 1 ORDER BY champs2 DESC
...de même pr les 3 autres requetes.

J'ai beau essayer en utilisant GROUP BY, je n'y arrive pas...
Si quelqu'un avait la solution, merci.

Hors ligne Un peu neuneu

  • Débutant
  • *
  • Messages: 100
[sql] Problème...
« Réponse #1 le: 25 mars 2004 à 09:03:17 »
heu tu as essayé ça :

SELECT c1, c2 FROM table WHERE (c2 = max(c2) AND c1 > 0 AND c1 < 5)

Je crois que la fonction max existe en sql ...
« Modifié: 25 mars 2004 à 09:27:05 par Un peu neuneu »
Ce qui est utile au plus grand nombre l'emporte sur les désirs d'un seul !

CaniHome

Hors ligne Robinson

  • Connaisseur
  • ***
  • Messages: 271
[sql] Problème...
« Réponse #2 le: 25 mars 2004 à 10:57:14 »
Non max() ne peut être dans la clause WHERE...

Hors ligne Un peu neuneu

  • Débutant
  • *
  • Messages: 100
[sql] Problème...
« Réponse #3 le: 25 mars 2004 à 11:30:40 »
ok.

Et :

select c1, max(c2) where (c1>0 and c1<5) group by c1

t'as essayé ?
Ce qui est utile au plus grand nombre l'emporte sur les désirs d'un seul !

CaniHome

Hors ligne Robinson

  • Connaisseur
  • ***
  • Messages: 271
[sql] Problème...
« Réponse #4 le: 25 mars 2004 à 11:32:56 »
Le problème est qu'il ne me retourne pas l'enregistrement où c2 est max...

Hors ligne csteph29

  • Débutant
  • *
  • Messages: 66
[sql] Problème...
« Réponse #5 le: 25 mars 2004 à 14:20:20 »
mysql> select * from matable;
+----+----+
| c1 | c2 |
+----+----+
|  1 |  1 |
|  1 |  2 |
|  2 |  4 |
|  2 |  0 |
+----+----+
4 rows in set (0.00 sec)

mysql> select t1.c1, max(t2.c2) from matable t1, matable t2
    -> where t2.c1 = t1.c1
    -> group by t1.c1
    ->;
+----+------------+
| c1 | max(t2.c2) |
+----+------------+
|  1 |          2 |
|  2 |          4 |
+----+------------+
2 rows in set (0.00 sec)

Hors ligne Robinson

  • Connaisseur
  • ***
  • Messages: 271
[sql] Problème...
« Réponse #6 le: 25 mars 2004 à 15:04:00 »
J'ai compris le problème....

le max() me retourne bien la dernière date... le problème est sur l'autre champ...

il me retourne le champs2 de l'enregistrement 3 avec le champs1 de l'enregistrement 7...