SELECT MIN(date) marche pas !!!!

SELECT MIN(date) marche pas !!!! - SQL/NoSQL - Programmation

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  :sleep:  
 
donc voila en gros j'ai une requete que mysql n'aime ps trop la voila :  

Code :
  1. SELECT id, MIN(dateAchat), prixAchat, qtte_rest FROM stock_e WHERE refProd = 'DD001TEST' AND qtte_rest > 0


 
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.

Reply

Marsh Posté le 22-12-2004 à 14:49:31   

Reply

Marsh Posté le 22-12-2004 à 14:56:49    

Message d'erreur stp.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 22-12-2004 à 15:06:30    

Code :
  1. ERROR 1140 at line 1: Mixing of GROUP columns (MIN(),MAX(),COUNT()...)
  2. with no GROUP columns is illegal if there is no GROUP BY clause


 
:)

Reply

Marsh Posté le 22-12-2004 à 15:07:13    

serait-il obligatoire de mettre un GROUP BY apres un MAX, MIN, COUNT etc. ???

Reply

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 ;)


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

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 :)

Reply

Marsh Posté le 22-12-2004 à 20:48:15    

Naeh a écrit :

j'ai ajouté un GROUP BY et ca marche nickel :)


 :heink:  
J'y crois pas trop là... J'peux voir ?  :??:  


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 22-12-2004 à 21:55:21    

voila :)

Code :
  1. SELECT id, MIN(dateAchat), prixAchat, qtte_rest  FROM stock_e WHERE refProd = '$ref' AND qtte_rest > 0 GROUP BY refProd


 
la c sur ca marche puisque j'ai testé ;-)

Reply

Marsh Posté le 22-12-2004 à 22:17:18    

Bien joué  :jap:  
 
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 [:autobot]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

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.

Reply

Marsh Posté le 22-12-2004 à 22:52:53   

Reply

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 ?

Reply

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)

Reply

Marsh Posté le 22-12-2004 à 23:13:50    

merde grillaid :)
donc
WHERE DATE IN(SELECT MIN(date) FROM table)

Reply

Marsh Posté le 22-12-2004 à 23:14:54    

ou plutôt WHERE date = (SELECT MIN(date)) je sais plus...

Reply

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 :)

Reply

Marsh Posté le 22-12-2004 à 23:40:23    

appremment ca passe pas avec un requete imbriquée :(

Reply

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 :'(

Reply

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.


 :o C'est gentil de paraphraser, mais faut lire, aussi.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed