Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2038 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MySQL : Faire un MAX

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MySQL : Faire un MAX

n°1522431
Nichlas
Posté le 01-03-2007 à 17:41:50  profilanswer
 

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

mood
Publicité
Posté le 01-03-2007 à 17:41:50  profilanswer
 

n°1522462
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-03-2007 à 18:39:48  profilanswer
 

mets un select autour des deux autres:

Code :
  1. SELECT max(A.Quantite) FROM ( tonbouzin ) AS A


 
Mais bon ton union ne sert pas a grande chose :o

n°1522481
Nichlas
Posté le 01-03-2007 à 19:06:26  profilanswer
 

Merci.
 
Comment puis-je faire un deux en un sans le UNION ?

n°1522626
jeca
Posté le 02-03-2007 à 06:14:30  profilanswer
 

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


Message édité par jeca le 02-03-2007 à 06:17:03
n°1522635
MagicBuzz
Posté le 02-03-2007 à 08:10:02  profilanswer
 

:sweat:
 
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 :jap:
 
(MagicBuzz de mauvais poil parcequ'il vient de se renverser son bol de café sur le calbut)


Message édité par MagicBuzz le 02-03-2007 à 08:10:54
n°1522656
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-03-2007 à 09:31:51  profilanswer
 

c'est vendredi :o

 

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 :
  1. SELECT max(R.Quantite) FROM
  2. (SELECT contenir.idPiz, COUNT(contenir.idPiz) AS Quantite  
  3. FROM contenir  
  4. WHERE contenir.idPiz='1'  OR  contenir.idPiz='2'
  5. GROUP BY contenir.idPiz) R


Message édité par anapajari le 02-03-2007 à 09:32:08
n°1522740
MagicBuzz
Posté le 02-03-2007 à 11:18:00  profilanswer
 

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


Message édité par MagicBuzz le 02-03-2007 à 11:18:44
n°1523010
Nichlas
Posté le 02-03-2007 à 17:55:03  profilanswer
 

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

n°1523216
Tamahome
⭐⭐⭐⭐⭐
Posté le 03-03-2007 à 12:53:19  profilanswer
 

mon dieu, quelle horreur...

n°1523240
Nichlas
Posté le 03-03-2007 à 14:57:28  profilanswer
 

Tamahome a écrit :

mon dieu, quelle horreur...


Merci, ce genre de remarque fait avancer...  :sarcastic:

mood
Publicité
Posté le 03-03-2007 à 14:57:28  profilanswer
 

n°1523264
Tamahome
⭐⭐⭐⭐⭐
Posté le 03-03-2007 à 17:11:36  profilanswer
 

pourquoi une remarque devrait elle obligatoirement te faire avancer ? T'es pas a l'ecole ici hein :sarcastic: Ton code SQL est d'une mocheté sans nom (sérieux un Union pour faire ca...)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MySQL : Faire un MAX

 

Sujets relatifs
[MySql]Probleme requete interval date début- date fin pour réservationSynchro AS400 DB2 --> MySQL
[MySQL] : usage de "into outfile" et "union"[MySQL]Execution d'une sous requete qui retourne plusieurs lignes
Min max par variable MYSQL/PHP[PHP][MySQL] MySQL retourne une valeur erroné à une requète max(id)
[Mysql] pb entre max et mysql_num_rowsDifférence entre MySQL et MySQL MAX ?
[MySQL] Ch'ais pas où caser mon MAX()[Php/MySQL] - SELECT MAX(.. et GROUP BY, ca va pas :( [RESOLU!!!]
Plus de sujets relatifs à : MySQL : Faire un MAX


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR