J'ai deux requêtes de sélection à utiliser dans mon projet pour obtenir des données et les afficher dans ma page Web. Je veux les rejoindre de sorte que je n'ai besoin d'accéder aux données qu'une seule fois. Mais je ne sais pas comment les joindre car l'une des requêtes contient la fonction de groupe. Pourriez-vous m'aider? Merci d'avance.Joindre deux requêtes
Répondre
Une façon de résoudre ce problème serait de faire le travail en plusieurs étapes. Avant de joindre le jeu de résultats à la requête, vous devez l'enregistrer dans une variable de table ou de table temporaire. (Une table temporaire peut être préférable si vous attendez un grand jeu de résultats.)
Fondamentalement, votre requête changerait quelque chose comme ceci:
/* prepare the storage */
IF OBJECT_ID('tempdb..#sp_results') IS NOT NULL
DROP TABLE #sp_results;
CREATE TABLE #sp_results (
/* the types may be wrong, please modify as necessary */
currency_cd int,
salary decimal(10,2)
);
/* save the results of the SP */
INSERT INTO #sp_results
EXEC SP_namearguments…
/* use the saved results in your query */
SELECT
your present columns,
tmp.currency_cd,
tmp.salary
FROM
your present joins
LEFT OUTER JOIN #sp_results AS tmp ON a proper join condition
;
Le problème est, cependant, votre SP est conçu pour renvoie les résultats pour un employé individuel alors que la requête semble récupérer des données pour plusieurs employés. Pour résoudre le problème, vous pouvez ajouter une colonne employee_code
à la table temporaire et obtenir/enregistrer les résultats pour chaque employé un par un, dans un curseur, en utilisant une boucle.
Mais ce serait probablement l'un des pire exemples d'utilisation d'un curseur. Une meilleure alternative pourrait consister à créer une vue de retourner les mêmes données que votre SP, mais pour tous employés:
CREATE VIEW employees_compensation_view
AS
SELECT
employee_code,
currency_cd,
SUM(comprate) AS salary
FROM employees_compensation
GROUP BY
employee_code,
currency_cd
alors vous pourrez juste pour se joindre à la vue de votre requête, comme ceci:
SELECT
your present columns,
ecv.currency_cd,
ecv.salary
FROM
your present joins
LEFT OUTER JOIN employees_compensation_view AS ecv
ON b.employee_code = ecv.employee_code
;
Pour une meilleure encapsulation de votre logique métier, vous pouvez également modifier la requête de cette procédure stockée comme:
SELECT
currency_cd,
salary
FROM employees_compensation_view
WHERE employee_code = @emp_code
C'est, si vous avez toujours besoin de ce SP.
- 1. Joindre deux requêtes Oracle
- 2. joindre deux requêtes Mysql
- 3. MySQL Joindre deux requêtes horizontalement
- 4. SQLite - joindre deux sous-requêtes
- 5. Comment joindre deux requêtes mysql?
- 6. Comment joindre deux requêtes SQL?
- 7. Joindre deux requêtes en une seule
- 8. joindre deux requêtes SELECT dans postgresql
- 9. Joindre deux requêtes sql dans un
- 10. SQL - joindre deux sql séparés requêtes
- 11. Joindre deux sous-requêtes dans MySQL
- 12. MySQL: moyenne et joindre deux requêtes
- 13. comment joindre plus de deux requêtes mdx
- 14. Joindre deux requêtes en une seule
- 15. Comment joindre deux longues requêtes d'une table?
- 16. Besoin d'aide avec MySQL, joindre deux requêtes
- 17. comment joindre ces requêtes
- 18. Joindre 2 requêtes mysql
- 19. Comment joindre ces requêtes?
- 20. joindre trois requêtes SQL
- 21. Comment puis-je joindre deux requêtes sur la même table?
- 22. joindre deux requêtes MySQL basées sur des paramètres
- 23. Requête SQL: comment joindre deux requêtes SQL dans Oracle Rapport
- 24. Joindre deux requêtes sql côte à côte sans colonne commune
- 25. Linq, devrais-je joindre ces deux requêtes ensemble?
- 26. Un moyen de joindre ces deux requêtes sans sous-requête?
- 27. Joindre deux requêtes ou une union/union tous
- 28. Comment joindre les résultats de deux sous-requêtes dans PostgreSQL?
- 29. Comment joindre ces deux requêtes PSQL ensemble correctement?
- 30. se joindre à MySQL Requêtes
Merci. J'ai créé le fichier employees_compensation_view et je l'ai joint à ma requête. –