SELECT MIN(date) marche pas !!!! - SQL/NoSQL - Programmation
Marsh Posté le 22-12-2004 à 14:56:49
Message d'erreur stp.
Marsh Posté le 22-12-2004 à 15:06:30
Code :
|
Marsh Posté le 22-12-2004 à 15:07:13
serait-il obligatoire de mettre un GROUP BY apres un MAX, MIN, COUNT etc. ???
Marsh Posté le 22-12-2004 à 15:13:17
Beh oui... Ici tu mixes id, prixAchat avec un MIN. Ce n'est pas permis par SQL.
Ce que tu veux, c'est un MIN dans une clause WHERE en l'occurence, avec les champs id, prixAchat et dateAchat dans le SELECT.
Citation : il me semble que c'est ce que je faisais en cours et les profs aimaient toujours |
D'où tu sors, toi
Marsh Posté le 22-12-2004 à 20:40:54
oki oki merci beaucoup pour les reponses
j'ai ajouté un GROUP BY et ca marche nickel
merci encore
Marsh Posté le 22-12-2004 à 20:48:15
Naeh a écrit : j'ai ajouté un GROUP BY et ca marche nickel |
J'y crois pas trop là... J'peux voir ?
Marsh Posté le 22-12-2004 à 21:55:21
voila
Code :
|
la c sur ca marche puisque j'ai testé ;-)
Marsh Posté le 22-12-2004 à 22:17:18
Bien joué
En général, ce genre de clause n'est pas très maintenable, car la moindre modif sur la clause SELECT (ou, en l'occurence, sur la clause WHERE) demande d'adpater de même le GROUP BY.
Mais je dois dire qu'en l'espèce, c'est élégant.
Imagine que tu ne dispose plus de la clause WHERE, car le filtre n'est plus utilisé. Que se passe-t-il
Marsh Posté le 22-12-2004 à 22:52:53
bon
apres quelques tests plus poussés il s'est averé que la requette n'est pas bonne en fait :s
bon les compta'men auront compris que c'est pour gerer les methodes LIFO et FIFO.
le probleme c'est que quand je prends la date max par exemple, il ne prends pas la ligne ou la date est la maximale, mais il prends la date max te pour le reste il prends les premier qu'il trouve dans la table
exemple :
si j'ai 2 lignes dans ma table avec la meme refProd :
ligne 1 : id 2 date 20/12/04 rest 10
ligne 2 : id 4 date 22/12/04 rest 6
donc dans ce cas la meme requete qu'en haut avec un max retourne :
id 2 date 22/12/04 rest 10
donc il prends bien la date max mais pas toute la ligne, et la franchement je bloque grave !
merci.
Marsh Posté le 22-12-2004 à 23:08:24
en fait ce qu'il faut lui dire en gros c'est : where date est la max/min
est-ce possible en SQL et comment le dire ?
Marsh Posté le 22-12-2004 à 23:13:11
Ben vi, tu select le (min)date alors que c'est pas ça que tu veux select.
Tu veux select une ligne WHERE min(date).
(ma syntaxe est pas bonne là, mais tu comprends l'idée je pense)
Marsh Posté le 22-12-2004 à 23:13:50
merde grillaid
donc
WHERE DATE IN(SELECT MIN(date) FROM table)
Marsh Posté le 22-12-2004 à 23:14:54
ou plutôt WHERE date = (SELECT MIN(date)) je sais plus...
Marsh Posté le 22-12-2004 à 23:32:12
je croyais que mysql ne gerait pas les requetes imbriquées, si ca marche c sur que c'est vachement plus simple
Marsh Posté le 22-12-2004 à 23:58:40
normal que ca passe pas je suis sur un mysql 4.0.23 et les requetes imbriquées sont acceptées depuis la version 4.1
dommage
Marsh Posté le 23-12-2004 à 09:15:35
Citation : Ce que tu veux, c'est un MIN dans une clause WHERE en l'occurence, avec les champs id, prixAchat et dateAchat dans le SELECT. |
C'est gentil de paraphraser, mais faut lire, aussi.
Marsh Posté le 23-12-2004 à 18:36:50
Naeh a écrit : je croyais que mysql ne gerait pas les requetes imbriquées, si ca marche c sur que c'est vachement plus simple |
ah désolé j'avais pas vu le mysql.
Marsh Posté le 22-12-2004 à 14:49:31
Salut a tous
bon comme d'hab je me refuge ici quand je bloque et là je commence a fumer de la tete
donc voila en gros j'ai une requete que mysql n'aime ps trop la voila :
donc voila j'ai regardé un peu du coté de la doc mais rien de concluant
il me dit que mon MIN sur la date n'est pas bon, pourtant il me semble que c'est ce que je faisais en cours et les profs aimaient toujours
donc voila merci d'avance.