requête de selection

Par Blacky, il y a 8 ans


Base de données MySQL

Bonjour,
s'il vous j'ai un problème avec une requête SQL, en fait j'ai une table qui a un même numero pour des prix differents. Mon but est de selectionner le plus petit prix de la liste de prix par series de numero tout en affichant tous les champs de la table.
voici ma table:
colis(id, frais, nomexp, telexp, nomdest, numdest, nature, numero, etat, created, modified)
ma requête est la suivante:

Ce que je fais

-dabord ceci permet davoir la petite valeur par numero : SELECT MIN(frais) as frais, numero FROM colis GROUP BY numero
-la mise ensemble pour avoir tous les champs de la table me pose un probleme
SELECT FROM colis WHERE frais in (SELECT MIN(frais) as frais FROM colis GROUP BY numero) celleci me donne la reponse de SELECT FROM COLIS
Entourez votre code pour bien le mettre en forme

### Ce que je veux je veux obtenir tous les champs de ma table ayant pour frais le plus petit de chaque serie de numero ### Ce que j'obtiens j'obtiens toujours la reponse du SELECT * FROM COLIS

4 réponses

Damien73, il y a 8 ans

C'est compliqué ta demande, sans que tu ai une autre table pour aider.
J'ai réflèchi à plein de solution, mais à chaque fois ça finissait par être trop compliqué.

Tu as pas une autre table qui peux aider dans le trie ?

Psylozoff, il y a 8 ans

Tu group by "numero" sauf que "numero" n'est plus présent dans ta requête finale...

Et il me semble que "as frais" est inutile si tu n'en fais rien ensuite ;-p

Donc, j'imagine que "SELECT * FROM colis WHERE frais in (SELECT MIN(frais), numero FROM colis GROUP BY numero) " fera l'affaire, non?

Huggy, il y a 8 ans

Le pb c'est qu'avec l'operateur IN la sous-requete ne doit afficher qu'un seul champ
l'autre soucis c'est l'alias 'frais' qui entre en conflit avec le nom de champ 'frais'
une solution consiste à faire une jointure par le numero

SELECT C.*, R1.minfrais FROM colis C LEFT JOIN (SELECT MIN(frais) AS minfrais, numero FROM colis GROUP BY numero) R1 ON (C.numero = R1.numero)
Psylozoff, il y a 8 ans

Bien joué Huggy ;-) Les jointures conditionnelles... On y pense pas assez!!