2017-08-21 7 views
0

Je suis nouveau à SQL alors excuses pour la question Noob. J'ai cherché d'autres articles mais je n'arrive pas à trouver quelque chose qui fonctionne avec mon problème ...Rejoindre 2 requêtes SQL à partir de tables différentes

Essentiellement, j'ai 2 tables (DOCMASTER, DOSHISTORY), comme vous l'avez peut-être deviné une requête sur notre DMS. Essentiellement, un utilisateur veut un rapport sur un certain nombre de numéros de documents (ce sont des documents modèles) avec les informations suivantes; - Date de création - Dernier accès - Dernière mise à jour - Numéro de document (identifiant unique)

Je peux obtenir les informations ci-dessus avec les 2 requêtes ci-dessous;

CRÉÉ LA DATE DE LA DERNIÈRE DATE MODIFIÉ (de la table DOCMASTER)

SELECT [DOCNAME],[DOCNUM],[EDITWHEN] as 'last edited date',[ENTRYWHEN] as 'created date' 
FROM [Knowledge_Prod].[MHGROUP].[DOCMASTER] 
where DOCNUM in ('10098776', '1355264') 

DERNIÈRE DATE ACCESSIBLE (de la table DOCHISTORY)

SELECT DOCNUM, MAX (ACTIVITY_DATETIME) as 'last accessed date' 
FROM [Knowledge_Prod].[MHGROUP].[DOCHISTORY] 
WHERE ACTIVITY in ('View','Create','Copy', 'Checkin', 'Checkout','Print','Mail') 
    and DOCNUM in ('10098776', '1355264') 
Group by DOCNUM 

Quelle serait la meilleure façon de joindre ces requêtes sur la base sur le DOCNUM pour compiler les résultats ensemble pour ressembler;

docnum - dernière date d'accès - dernière mise à jour Date - date de création

à l'avance pour Thankyou votre aide cela a été écrasait mon âme depuis quelques heures. AUSSI j'utilise SMSS pour toutes mes requêtes.

Répondre

2

puisque nous ne disposons pas de données de test pour tester et au-dessous est un moyen le plus sûr

;with cte 
as 
(
SELECT [DOCNAME],[DOCNUM],[EDITWHEN] as 'last edited date',[ENTRYWHEN] as 'created date' 
    FROM [Knowledge_Prod].[MHGROUP].[DOCMASTER] 
    where DOCNUM in ('10098776', '1355264') 
) 
,cte1 as 
(
SELECT DOCNUM, MAX (ACTIVITY_DATETIME) as 'last accessed date' 
     FROM [Knowledge_Prod].[MHGROUP].[DOCHISTORY] 
     WHERE ACTIVITY in ('View','Create','Copy', 'Checkin', 'Checkout','Print','Mail') and DOCNUM in ('10098776', '1355264') 
     Group by DOCNUM) 
select * from cte c join cte1 c1 
on c1.docnum=c.docnum 
+0

Vous êtes une légende ..! Je vais devoir chercher comment tu as fait ça car c'est génial. Appréciez la réponse rapide! - Acceptera dès que le temps minimum est écoulé. Merci beaucoup –

+0

GLad il vous a aidé, je recommande de jeter un oeil à ce lien pour les questions futures, il permet de tester et aussi vous pouvez obtenir des upvotes ainsi: https: //spaghettidba.com/2015/04/24/how -to-post-at-sql-question-sur-un-forum-public/ – TheGameiswar

+1

Excellente merci pour le pourboire! Je serai sûr de mettre en œuvre dans ma prochaine question :) –

0
SELECT [DOCNAME],[DOCNUM],[EDITWHEN] as 'last edited date',[ENTRYWHEN] as 'created date', MAX (ACTIVITY_DATETIME) as 'last accessed date' 
FROM [Knowledge_Prod].[MHGROUP].[DOCMASTER] dm 
    INNER JOIN [Knowledge_Prod].[MHGROUP].[DOCHISTORY] dh 
    ON dm.DOCNUM = dh.DOCNUM 
WHERE dm.DOCNUM in ('10098776', '1355264') 
AND dh.ACTIVITY in ('View','Create','Copy', 'Checkin', 'Checkout','Print','Mail') 
GROUP BY [DOCNAME],[DOCNUM],[EDITWHEN],[ENTRYWHEN]