MySQL : Faire un MAX - SQL/NoSQL - Programmation
Marsh Posté le 01-03-2007 à 18:39:48
mets un select autour des deux autres:
Code :
|
Mais bon ton union ne sert pas a grande chose
Marsh Posté le 01-03-2007 à 19:06:26
Merci.
Comment puis-je faire un deux en un sans le UNION ?
Marsh Posté le 02-03-2007 à 06:14:30
Bonjour,
Et comme ça (pour mysql) :
SELECT COUNT(contenir.idPiz) as Quantite
FROM contenir
WHERE contenir.idPiz in (1, 2)
GROUP BY contenir.idPiz
ORDER BY Quantite DESC
LIMIT 0, 1
Marsh Posté le 02-03-2007 à 08:10:02
finalement, Oracle c'est pas si mal avec leur "oubli" de mettre une fonction "simple" pour limiter le nombre de résultats.
pensez aux gens qui vont fait la maintenance derrière vous bordel !
je veux bien qu'il est 8h et que j'ai la tête dans le cul, mais là, jeca, faut pas pousser :
-> entre les champs de la clause group by qui ne figurent pas dans la liste des champs sélectionnés (heureusement ça plante sur la plupart des SGBD) et le limit des familles pour éviter un max qui aurait le mérite d'être lisible... là c'est carton rouge direct.
t'as RIEN économisé niveau performances, c'est une ânerie que de le croire. niveau syntaxe, t'as économisé l'écriture d'une vingtaine de caractères, et par contre, pour le gars qui va repasser derrière toi sur un gros projet, ça tu vas gagner un bon lot d'insultes, et lui de migraines. sans parler du client qui va gagner un bon lot de bugs le temps que tout soit réécrit derrière toi, faute d'être maintenable.
bref, arrêtez d'écrire un code pareil, et d'ensuite le conseiller aux autres.
LIMIT, ça sert pas à faire des MAX
GROUP BY ne doit contenir que des éléments retrouvés dans le SELECT
Bon, ceci dit, ta requête marche effetivement très bien
(MagicBuzz de mauvais poil parcequ'il vient de se renverser son bol de café sur le calbut)
Marsh Posté le 02-03-2007 à 09:31:51
c'est vendredi
Mais sinon je suis d'accord avec toi Magic, la requete telle qu'écrit par jeca est vraiment ... pas super .
Quand moi je parlais de virer l'union, c'était plus comme ça:
Code :
|
Marsh Posté le 02-03-2007 à 11:18:00
oui oui, j'adhérait à ta solution à 100%
on peut utiliser un IN aussi au lieu du OR, ça évite les surprises si on doit ajouter un autre critère
Marsh Posté le 02-03-2007 à 17:55:03
Merci de votre aide !
Autre question, j'ai ça :
SELECT max(A.nb)
FROM (SELECT sum(qte) as Nb, nomPiz FROM contenir as C, pizza as P WHERE C.idPiz=P.idPiz GROUP BY P.idPiz) as A
La requète du FROM me permet d'extraire ça :
Pizza | Quantité
------------------------
4 fromages | 5
chèvre |7
Le max me permet ensuite de recupérer la quantité la plus grande, mais je perds le nom de la pizza...
Comment le récuperer ?
Merci
Marsh Posté le 03-03-2007 à 14:57:28
ReplyMarsh Posté le 03-03-2007 à 17:11:36
pourquoi une remarque devrait elle obligatoirement te faire avancer ? T'es pas a l'ecole ici hein Ton code SQL est d'une mocheté sans nom (sérieux un Union pour faire ca...)
Marsh Posté le 01-03-2007 à 17:41:50
Bonjour,
j'ai cette requète qui me retourne une colonne nommée QUANTITE, avec deux valeurs dedans (1 et 2).
Je souhaite selectionner la plus grande, comment intégrer le MAX...
SELECT COUNT(contenir.idPiz) as Quantite
FROM contenir
WHERE contenir.idPiz='1'
UNION SELECT COUNT(contenir.idPiz) as Quantite
FROM contenir
WHERE contenir.idPiz='2'
Merci