Vérification des conditions dans trois tables et valeurs d'printing

J'ai eu Table 'tblPacks','tblBlistrs','tblShippers' Maintenant, je veux une procédure stockée que l'user va envoyer T_id,BatchNumber maintenant, je dois vérifier si le T_id And BatchNumber existe dans ces tables.Si T_ID,BatchNumber existe dans 'tblPacks' et n'existe pas dans 'tblBlistrs' and 'tblshippers' Il devrait `print T_ID, BatchNumber et les noms de la table où ces deux colonnes sont présentes Exemple: –

Structure du tableau 'tblPacks'

  T_ID BatchNumber PackId Status ---- ---------- ------ ----- 1 101 ABC001 0 

Structure du tableau 'tblBlistrs'

 T_ID BatchNumber BlistrId Status ---- ---------- ------ ----- 1 101 PAC001 0 

Structure du tableau 'tblShippers'

 T_ID BatchNumber ShipperId Status ---- ---------- ------ ----- 1 101 KBC001 0 

Par exemple, si l'user donne T_id,BatchNumber comme 1 101 Maintenant que par condition, je devrais imprimer T_ID comme '1' BatchNumber comme '101; et devrait imprimer 'tblPacks,tblBlistrs,tblShippers' car T_id and BatchNumber existent dans trois tables

La requête suivante regroupe les trois tables, puis les regroupe sur l'ID et le numéro de lot pour produire une list CSV de tables pour les tables où l'ID et le numéro de lot sont présents.

 WITH cte AS ( SELECT T_ID, BatchNumber, 'tblPacks' AS label FROM tblPacks UNION ALL SELECT T_ID, BatchNumber, 'tblBlistrs' FROM tblBlistrs UNION ALL SELECT T_ID, BatchNumber, 'tblShippers' FROM tblShippers ) SELECT t1.T_ID, t1.BatchNumber, STUFF((SELECT N', ' + t2.label FROM cte AS t2 WHERE t1.T_ID = t2.T_ID AND t1.BatchNumber = t2.BatchNumber ORDER BY t2.label FOR XML PATH(N'')), 1, 2, N'') AS tables_present FROM cte t1 WHERE t1.T_ID = 1 AND t1.BatchNumber = 101 GROUP BY t1.T_ID, t1.BatchNumber