Page 1 sur 1

sql et fonction MIN

Posté : 21 nov. 2008, 13:19
par Marie
Bonjour,

J'ai une table ARTICLE avec comme champs entre autres: réf, libellé et stock.
Je veux afficher le libellé du stock le plus petit. Or je n'y arrive pas.

(afficher juste le stock minimum ne me pose pas de pb mais sans le libellé correspondant...)

Merci bp pour votre aide !

Posté : 22 nov. 2008, 12:47
par caroube
tu peux faire un truc tout simple :

Code : Tout sélectionner

select ref, libelle, stock from article where stock = (select min(stock) from article)

Posté : 22 nov. 2008, 13:27
par jojolapine
ou sinon un truc genre

Code : Tout sélectionner

SELECT * FROM matable ORDER BY stock ASC LIMIT 0,1

Posté : 22 nov. 2008, 15:05
par albat
La solution de caroube est correcte, mais gourmande :
elle nécessite l'exécution de deux requêtes.

La solution de jojolapine est optimisée,
mais je vais quand même lui tirer les oreilles :
ON N'UTILISE JAMAIS DE SELECT * !!! :tir2:

Posté : 22 nov. 2008, 15:45
par jojolapine
Punition:
On n'utilise jamais le * dans un select sauf si il est au sein d'un count(), auquel cas il est plus otpimisé que tout le reste
On n'utilise jamais le * dans un select sauf si il est au sein d'un count(), auquel cas il est plus otpimisé que tout le reste
On n'utilise jamais le * dans un select sauf si il est au sein d'un count(), auquel cas il est plus otpimisé que tout le reste
On n'utilise jamais le * dans un select sauf si il est au sein d'un count(), auquel cas il est plus otpimisé que tout le reste
[...] x 1000
On n'utilise jamais le * dans un select sauf si il est au sein d'un count(), auquel cas il est plus otpimisé que tout le reste


Milles excuses... :oops:

ok

Posté : 22 nov. 2008, 17:02
par Marie
Mille mercis !!

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 22 nov. 2008, 17:21
par albat
:!: Une précision supplémentaire :

En cas d'ex-aequo,
la solution de caroube te retournera plusieurs résultats.
la solution de jojolapine ne te retournera qu'un seul résultat.

Posté : 24 nov. 2008, 18:59
par Marie
Ok en cas ex-aequo.

[Je ne m'étais même pas posé la question de savoir ce qui se passait en cas d'ex-aequo.... Et j'ai utilisé la solution proposée par Caroube . (je ne comprends pas limit 0,1 dans la solution de Jojolapine; pas la peine de m'expliquer, ça me passera au dessus.... et select * ben ...je fais ça aussi des fois et sans complexe.... :oops: )]

Posté : 24 nov. 2008, 19:30
par caroube
Petite précision : non, mes deux requêtes ne sont pas gourmandes.
Elles sont plus gourmandes qu'une solution avec un seul select, mais on ne peut pas dire que cette solution est "gourmande" : il n'y a pas de jointure, il n'y a pas d'order, il n'y a pas de group ...

Il faudrait une machine bien faible et une base bien volumineuse pour que ces deux select imbriqués foutent le serveur à genoux, comme le ferait une requête "gourmande".

Posté : 24 nov. 2008, 20:48
par Sékiltoyai
Oui, si c'était si immonde que cela pour les performances, les requêtes imbriquées n'existeraient pas…