|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||||
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 468 ![]() |
bonjour à tous,
Je dipose d'une requete sql que j'ai "simplifié" j'ai enlevé les champs qui ne m'intessessait pas . Code :
J'arrive a récupérer le nom entreprise , atelier, plus le nombre de ligne (count). Mais je n'arrive pas faire une somme d'une somme. Ci-dessous la partie de la requête qui m'intéresser: Code :
Code :
entreprise1|atelier|nbr 88| Somme total. Code :
Merci d'avance pour votre aide guigui69 |
||||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() |
Votre requète n'est pas aisée à decrypter mais vous groupez sur tgempresa.razon, tgtaller.descrip, ttOTIntervencion.Emp, ttOTIntervencion.Numinterno, ttOTIntervencion.Intervencion
et vous n'avez pas tout ces champs dans le select... Testez en ne laissant que atelier et société dans votre group by?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#3 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 468 ![]() |
En enlevant "ttOTIntervencion.Emp, ttOTIntervencion.Numinterno, ttOTIntervencion.Intervencion" J'ai ceci comme message d'erreur:
Citation:
Code :
|
|||
|
|
00
|
|
|
#4 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 468 ![]() |
Voila ce que me retourne ka requete normalement:
Code :
Code :
Désolé si je ne suis pas clair dans mon explication. Guigui69 |
||||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Pas très clair en effet...
Veux-tu cette somme pour chaque ligne de résultat ? dans ce cas enlève la corrélation entre la sous requête et la requête principale. En plus ta requête n'en sera que plus rapide ! Si tu veux garder les sous-totaux, mais calculer à la fin le total global, tu peux mettre quelque chose comme : à la fin de ta requête... Un petit jeu de données, et surtout le résultat attendu nous aiderait a comprendre... |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Surtout que COMPUTE est désaprouvé et sera retirée...
Utilisez éventuellement CUBE ou ROLLUP, sinon une sous requête en table dérivée, ou mieux, une CTE. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#7 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 468 ![]() |
Bonsoir,
Je voudrait en faite la somme de ca Code :
Et quand résultat final (le résultat de la requête)j'ai: Entreprise toto | Atelier1 | 78|734.02| |
||
|
|
00
|
|
|
#8 | |||||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Bonjour,
Citation:
Ensuite vous ne qualifiez pas les noms des tables par le nom du schéma auquel elles appartiennent, ce qui oblige SQL Server au moment de l'exécution à le chercher à votre place. Dommage que vous n'ayez pas aliasé le nom de vos tables, surtout puisqu'elles sont nombreuses, car cela allège le texte de la requête. Les parenthèses après le WHERE servent rarement à quelque chose sauf à alourdir le texte de la requête. Enfin la jointure LEFT JOIN tgMarca MarcaLinea peut être combinée avec celle plus haut sur la même table. Je ne suis pas sûr des alias dans le CASE du SUM (L.tipocab et L.tipolinea) Tout cela fait, on obtient : Code :
Bref, y'a eu débroussaillage Comme suggéré par SQLPro, j'ai donc passé cette requête dans une CTE (vous savez comme je suis un fan des CTE) ce qui donne : Code :
Code :
Vous noterez au passage que les filtres comme <> ne sont pas SARGables Maintenant, est-il bien nécessaire de faire tous ces calculs pour obtenir un "super"-agrégat ? N'auriez-vous pas du faire une vue de cette requête ? @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|||||||
|
00
|
|
|
#9 |
|
Membre Expert
![]() |
Bravo elsuket, je n'ai pas eu le courage
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
J'ai un jeu d'expressions régulières qui font le boulot pour moi
Les développeurs des entreprises dans lesquelles je suis passé sont parfois aussi un peu brouillon, donc un jour j'en ai eu marre. Elles ne font pas tout ce qu'on pourrait faire, mais elles me font gagner pas mal de temps @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#11 | |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 468 ![]() |
Merci pour vos réponses.
La requête ce n'ai pas moi qu'il la réalisé, cela provient directement de notre Système d'information. C'est cette requête qui nous sort nos chiffres. Je regarde et je reply. Citation:
guigui69 |
|
|
|
00
|
|
|
#12 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Citation:
Vous savez, les automatismes en programmation, c'est jamais super-nickel. Ça aide c'est sûr, mais faut repasser derrière histoire de bien polisher Citation:
Quand vous créez une table, elle est par défaut créée sous le schéma dbo. Si vous ne le précisez pas dans vos requêtes (ou votre SI !), alors SQL Server cherche celui-ci et le compare à l'entité qui exécute la requête pour connaître ses privilèges de navigation dans la base de données. Si vous ne le précisez pas SQL Server le cherche donc dans les tables de métadonnées. C'est du pouillème bien sûr, mais des pouillèmes additionnés ... @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
|
|
#13 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 468 ![]() |
Merci pour l'explication, je vais relire ca pour bien tout comprendre.
(Comment préciser ceci dans ma requête) Concernant vos requêtes, il m'indique une erreur au niveau du "CROSS APPLY" lorsque j'essaie de l'exécuter: Code :
Merci guigui69 |
||
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Pouvez-vous nous donner le libellé de l'erreur ainsi que la version de SQL Server que vous utilisez (vous pouvez utiliser une des deux requêtes que j'ai publié ici) ?
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#15 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 468 ![]() |
Code :
Code :
|
||||
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
En effet, il me semble que l'opérateur "CROSS APPLY" n'est supporté que depuis la version 2005 (9), vous êtes en version 2000... |
|
|
00
|
|
|
#17 | |||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Ni les CTE, donc on doit revenir à :
Code :
En outre, si vous aviez respecté la charte de postage de ce forum, en particulier : Citation:
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|||
|
10
|
|
|
#18 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 468 ![]() |
Ah, je suis vraiment désolé
Je regarde la regarde la requete et je reply guigui69 |
|
|
00
|
|
|
#19 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 468 ![]() |
Bonjour,
Je me suis mi pendant 1heure sur la requête mais j'ai un message d'erreur pas rapport au GROUP Code :
Citation:
Ou se trouve l'erreur? guigui69 |
|||
|
|
00
|
|
|
#20 | ||
|
Membre Expert
![]() |
Vous avez juste oublié de donner un nom à votre sous-table:
Code :
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com