sql et fonction MIN

Petit nouveau ! | 5 Messages

21 nov. 2008, 13:19

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 !

Eléphant du PHP | 422 Messages

22 nov. 2008, 12:47

tu peux faire un truc tout simple :

Code : Tout sélectionner

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

ViPHP
ViPHP | 3607 Messages

22 nov. 2008, 13:27

ou sinon un truc genre

Code : Tout sélectionner

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

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

22 nov. 2008, 15:05

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:

ViPHP
ViPHP | 3607 Messages

22 nov. 2008, 15:45

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:

Petit nouveau ! | 5 Messages

22 nov. 2008, 17:02

Mille mercis !!

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

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

22 nov. 2008, 17:21

:!: 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.

Petit nouveau ! | 5 Messages

24 nov. 2008, 18:59

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

Eléphant du PHP | 422 Messages

24 nov. 2008, 19:30

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".

ViPHP
ViPHP | 5924 Messages

24 nov. 2008, 20:48

Oui, si c'était si immonde que cela pour les performances, les requêtes imbriquées n'existeraient pas…