begin process at 2012 05 26 17:32:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Requêtes

 > 

Jointure : ne renvoie pas tous les enregistrements


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Jointure : ne renvoie pas tous les enregistrements

vendredi 18 mars 2011 à 10:11:41 | Jointure : ne renvoie pas tous les enregistrements

Sieurcoug

Bonjour à tous,

J'ai 4 tables et je souhaite en faire une synthèse. La colonne SI est en quelque sorte le champ "pivot".
Pour un SI donné, il peut y avoir des dossiers sur une période, mais des fois 0.

Problème : Si t1.SI est vide (s'il n'y a pas de dossiers pour ce SI sur la période 1), il ne renvoie pas les autres enregistrements des autres périodes.

J'ai ajouté des ISNULL sur SI dans la première ligne, qui améliore les choses, mais ca duplique les SI dans la première colonne du résultat.

Code :
SELECT 	ISNULL(t1.SI, ISNULL(t2.SI, ISNULL(t3.SI, t4.SI))),
	ISNULL(t1.NbDossiers, 0) AS 'NB Dossiers Période 1',
	ISNULL(t2.NbDossiers, 0) AS 'NB Dossiers Période 2',
	ISNULL(t3.NbDossiers, 0) AS 'NB Dossiers Période 3',
	ISNULL(t4.NbDossiers, 0) AS 'NB Dossiers Période 4'
FROM	#tmpNBDossiers_PeriodeMoins1 t1
			FULL OUTER JOIN	#tmpNBDossiers_PeriodeMoins2 t2
				ON t1.SI = t2.SI
			FULL OUTER JOIN	#tmpNBDossiers_PeriodeMoins3 t3
				ON t1.SI = t3.SI
			FULL OUTER JOIN	#tmpNBDossiers_PeriodeMoins4 t4
				ON t1.SI = t4.SI
ORDER BY t1.NbDossiers DESC



Comment devrait être écrite cette requête selon vous ?
Merci à vous
dimanche 15 avril 2012 à 10:51:52 | Re : Jointure : ne renvoie pas tous les enregistrements

tri_yann

Réponse acceptée !

Bonjour,

Une solution est faire dans une sous requête une synthèse de tous les SI présents dans les 4 tables ex :
Code sql :
SELECT DISTINCT SI FROM t1
UNION SELECT DISTINCT SI FROM t2
UNION SELECT DISTINCT SI FROM t3
UNION SELECT DISTINCT SI FROM t4

Insérer cette sous requête dans la requête principale :

Code sql :
SELECT ...
FROM
(SELECT DISTINCT SI FROM t1
UNION SELECT DISTINCT SI FROM t2
UNION SELECT DISTINCT SI FROM t3
UNION SELECT DISTINCT SI FROM t4) A
LEFT JOIN #tmpNBDossiers_PeriodeMoins1 t1 ON A.SI = t1.SI
LEFT JOIN #tmpNBDossiers_PeriodeMoins2 t2 ON A.SI = t2.SI
LEFT JOIN #tmpNBDossiers_PeriodeMoins3 t3 ON A.SI = t3.SI
LEFT JOIN #tmpNBDossiers_PeriodeMoins4 t4 ON A.SI = t4.SI

Yann
lundi 16 avril 2012 à 12:09:21 | Re : Jointure : ne renvoie pas tous les enregistrements

Sieurcoug

Super !
Merci Yann pour ta réponse !


Cette discussion est classée dans : dossiers, t1, période, isnull, nbdossiers


Répondre à ce message

Sujets en rapport avec ce message

probleme de comparaison de table [ par ehmarc ] SalutJe suis sous MySQL voici ma requetejai deux table t1 et t2 qui ont en gros une soixantaine d'entrer chacunneje veut faire ressortir les champ qui requete sql [ par benjah ] Bonjour a tous,J'ai un problème pour pondre une requete sql. Voici mon probleme:J'ai deux tables : t1 et t2pour une donnée t1 est associée [0,n] donné Criteres de requetes en fonction d'une période (année + mois) [ par ronando ] Bjr à tous,J'ai un petit souci, j'ai une table facture (n°,montant,annee,mois)je laisse le choix a l'utilisateur d'afficher les factures entre une pér Trigger before delete [ par RMI ] Bonjour,Je souhaite créé un trigger sur la suppression d'enregistrement d'un table T1. Un table T2 est lié avec T1 par une référence de clé étrangère. Optimisation d'une requête de mise à jour [ par josserand ] Bonjour, J'ai besoin de créer des requêtes de mises à jour, appelant une sous-requête. Du genre :Code :</d requete jointure conditionnelle [ par floxone ] Salut, J'ai besoin de faire une requête de ce genre s'il vous plaît : SELECT SUM (v1 * (t2.v2+t2.v3+t3.v4) / v5)FROM table1 t1, table2 t2WHERE t1. Resultat incompréhensible [ par JALEO WAHRANI ] Bonjour, j'ai une base avec 2 tables: 'perso et client', perso a pour colonnes:id, prop, etatétat vaut 'Y' si on effectue un suivi, sinon (par défaut) changement des valeurs de toutes les lignes d'un DBGrid? aidez moi SVP [ par othland ] bonjour tous le monde!je travail avec un DBGrid et DBNavigator, et dans le onshow de ma fenetre j'excute une requete de type :'select T1.ch1, T1.ch2, Requête avec Sum [ par le_danseur ] Bonjour à tous !J'ai une table avec comme champs : Date, Débit, Crédit, Solde.Je souhaite extraire sur une période donnée : (date between date1 and da Défit pour un pro [ par zazadec ] Question de se compliquer la vie, je dois reprendre un site avec une bdd déjà existante... bref vous avez compris j'ai pas le choix.2 tables T1 et T2


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales