Accueil > Forum > > > > Probleme select...max
Probleme select...max
jeudi 16 septembre 2010 à 10:28:18 |
Probleme select...max

pcarme
|
Bonjour,
je dispose d'une table contenant les champs suivants :
N°_societe
N°_INSEE
N°_ilot
surface
produit
La requete suivante fonctionne et me donne la surface max par ilot tout en affichant la société.
SELECT N°_societe, N°_ilot, MAX(SURFACE) AS [surface max]
FROM ma_table
GROUP BY N°_societe, N°_ilot;
Je souhaite maintenant, afficher en plus le N°insee et le produit associé à cette surface max par ilot.
Et là, blocage, je n'y arrive pas (mon SQL commence à être sérieusement rouillé  ).
Merci pour votre aide...
|
|
jeudi 16 septembre 2010 à 11:14:48 |
Re : Probleme select...max

DARKSIDIOUS
|
Salut,
Si ton produit et ton numéro insee sont uniques dans ton groupe, alors ajoute les dans ta clause group by, sinon, tu ne pourras pas faire de select dessus : il n'est pas possible de faire un select d'un champ qui n'est pas contenu dans la clause GROUP BY et qui n'a pas une fonction d'agrégat, par exemple :
SELECT NOM, PRENOM, SUM(AGE) FROM Personne GROUP BY NOM
Ca ne passera pas, car tu peux avoir plusieurs personnes de même nom mais avec des prénoms différents !
Alors que :
SELECT NOM, PRENOM, SUM(AGE) FROM Personne GROUP BY NOM, PRENOM
Ca passera, mais le groupe sera différent.
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
|
|
jeudi 16 septembre 2010 à 13:29:16 |
Re : Probleme select...max

pcarme
|
Merci pour ta réponse,
le problème est que :
- 1 société peux être présente sur plusieurs N°_insee, et qu'un même N°_ilot peut avoir plusieurs produits....(elle est dure la vie...)
Aussi, ne serait-il pas possible d'agir en 2 temps :
1/ exécuter ma 1ere requête et stocker le résultat dans une table (tout en recopiant
le N° d'indexation [numeroauto] des lignes considérées)
2/ faire une requête select dans la table originale du N°_Insee et du produit avec, comme condition "afficher n°_insee et produit si N° d'index des 2 tables est égal"
Si c'est réalisable (et j'aimerai bien, ma table "pèse" 19000 lignes...), comment faire??
|
|
jeudi 16 septembre 2010 à 13:41:04 |
Re : Probleme select...max

DARKSIDIOUS
|
Salut,
Ce n'est pas aussi simple, comme je te l'ai dit, la clause GROUP BY indique que les lignes sont groupées selon les critiques indiqués, donc, si tu prends la table :
id nom prenom age
1 toto titi 20
2 toto tata 21
3 titi tutu 22
Si tu fais :
SELECT NOM, SUM(AGE) FROM Personne GROUP BY NOM
Ca va te renvoyer :
toto 41
titi 22
mais à partir de cà, tu ne peux pas savoir que les toto en question, c'est les id 1 et 2.
Il faut alors faire une seconde requête pour chaque ligne retournée par ta requête :
SELECT id, Nom FROM TableTemporaire WHERE NOM = "toto"
Et là tu pourra savoir les id correspondant pour chaque ligne, mais si ta première requete te renvoie 10 000 lignes... cela implique que tu fasses 10 000 requetes pour récupérer les id...
Après, il doit être possible de faire cà avec des requêtes imbriquées, et si tu as mis les bons indexes, ca devrait aller relativement vite, du style (à adapter, je suis pas sûr que ca fonctionne) :
SELECT id, Nom, SumAge.Age FROM (SELECT NOM As SumNom, SUM(AGE) AS SumAge FROM Personne GROUP BY NOM) AS SumTable INNER JOIN Personne ON SumTable.NOM = Personne.Nom
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
|
|
mardi 28 septembre 2010 à 23:47:23 |
Re : Probleme select...max

Zlub
|
Salut,
Sur quelle base de données tu travailles ? quelle est la version de ton serveur ?
Existe-t-il plusieurs N°insee par ilot ?
comment connais-tu les produits actuellement sur un ilot ?
Peux-tu donner la structure des tables qui sont à mettre en relation ? tu n'as qu'une table ?
Peux-tu donner un exemple de données que tu stockes ?
Bref, sans ces précision et dans l'absolu, via une requête imbriquée comme l'indique DARKSIDIOUS tu devrais pouvoir obtenir se que tu souhaites.
Code :
SELECT id, Nom, SumAge.Age
FROM (SELECT NOM As SumNom, SUM(AGE) AS SumAge FROM Personne GROUP BY NOM) AS SumTable
INNER JOIN Personne ON SumTable.NOM = Personne.Nom
Attention toutes les bases de données n'acceptent pas les requêtes imbriquées. A vérifier que ta base de données et que la version de ton serveur gère cette fonctionnalité.
Sinon autre option serait de passer par une table temporaire que tu peux alimenter via un INSERT INTO SELECT ... puis faire des update dessus.
++
Zlub
|
|
Cette discussion est classée dans : select, max, surface, societe, ilot
Répondre à ce message
Sujets en rapport avec ce message
Help pour une requete !!! [ par Rouk ]
Bonjour,Je developpe une application en vb.net qui a une connection a un serveur SQL.Dans mon application, je remplis un datagrid par une requete, voi
Selection de tables [ par Rouk ]
Bonjour,je debeloppe en vb.net un datagrid alimente par une base sqlje voudrai faire une selection des tables que j'affiche dans le datagrid.SELECT
enlever les accents lors d'un select [ par momotaro ]
momotaroBonjour,Je voudrais savoir s'il y a un moyen quand on récupère des données avec un select, d'enlever les accents sur les caractères avant d'ob
SELECT sur un serveur SQL distant [ par Datadis ]
Bonjour tout le monde,Quelqu'un peut-il m'aider à faire un SELECT sur un serveur SQL distant.Par exemple, j'ai une procédure stockée qui s'exécute sur
Faire plusieurs if dans un procedure stockee [ par chris81 ]
bonjour,comment puis je faire pour verifier plusiseurs if dans la meme procedure stockee c'est a direif not exist(SELECT Id FROM...) et if not exists(
Select sans doublon avec date la plus recente [ par ironnyc ]
Bonjour a tous!je cherche a faire une requete Select avec une base MySql sur la table suivante: #Table "historique"+-----+-------------+------------+|
Problème de select avec un like [ par vincentstryckmans ]
Salut, En Delphi 7, j'utilise les composants InterbaseExpress pour communiquer avec Interbase. Une de mes requêtes est du type : select id, num_rel
Select * from uneProcedureStockee [ par lutin2004 ]
Bonjour, je voudrais faire une requête du style Select * from uneProcedureStockee where critere = "ccccc" Qui s'apparenterait en fait à un tri des rés
TVA sur ma requete [ par spoque ]
bonjour à tous,comment faire pour rajouter la TVA (7,6%) sur cette requete?Merci d'avance(select sum(compte) from (SELECT (COUNT (ID)*10) as compte FR
select replace [ par yan_j ]
bonjour,je cherche a savoir comment faire pour lorsque je passe une requete select sur une table qu'il me retourne 0 lorsque la valeur et M et 1 lorsq
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : ORACLE FORMSRE : ORACLE FORMS par csmahicham
Cliquez pour lire la suite par csmahicham
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|