J'ai 3 tables avec lesquelles je travaille. La tableA contient les informations pour le client, chaque ligne contient toutes les informations pour une personne spécifique.Requête SQL complexe renvoyant des résultats non désirés
La table B contient des informations sur un message créé par une personne dans TableA.
ID DistID Subject Message CreatedDate StatusID SentTotal
57 3 MonList MonList 2012-03-19 16:21:36.117 2 4
La tableC contient une liste de personnes qui ont accès au message dans la TableB.
ID MessageID DistID StatusID Important OriginalMessagelID
25111 58 516 1 0 NULL
25112 58 519 1 0 NULL
25114 58 374 1 0 NULL
25115 58 5545 1 0 NULL
25116 58 23435 1 0 NULL
TableC MessageID sera le même que TableB ID. TableB et TableC DistID référencent le DistID dans la TableA (tableau A inclus moyen de beaucoup d'informations à copier même pour une seule ligne, il s'agit d'un ratio de 1 à 1, 1 ligne pour un client)
J'ai besoin de produire une requête qui relie ces trois tables ensemble. Voici ce que j'ai jusqu'à présent:
SELECT *
FROM Distributor d
INNER JOIN Messages ms
ON ms.DistID = d.DistID
INNER JOIN Message m
ON m.DistID = d.DistID
WHERE ((d.DCLoginDate <= (GETDATE() - 3) OR d.DCLoginDate IS NULL) AND (CONVERT(VARCHAR(8), m.CreatedDate, 1)) = (CONVERT(VARCHAR(8), GETDATE(), 1)))
Maintenant TableB peut avoir plusieurs messages créés par le même client, de sorte que leur DistID peut être présent dans ce tableau plus de 1 fois. TableC est de la même manière, le DistID peut être présent dans cette table plus d'une fois.
je commencé à faire des requêtes individuelles qui ont travaillé:
SELECT *
FROM Distributor
WHERE (DCLoginDate <= (GETDATE() - 3) OR DCLoginDate IS NULL)
SELECT *
FROM Message m
INNER JOIN Messages ms
ON ms.MessageID = m.ID
WHERE ((CONVERT(VARCHAR(8), CreatedDate, 1)) = (CONVERT(VARCHAR(8), GETDATE(), 1)))
Les travaux ci-dessus correctement, quand j'ai essayé de les combiner en une seule déclaration, il a commencé à revenir 0 quand je serais revenu deux (de mes données en direct , pas les données fournies ci-dessus).
Quelqu'un comprend comment faire fonctionner efficacement?
Merci qui a fonctionné comme il était censé renvoyer 2 résultats. Parfois, les choses les plus difficiles à trouver sont les plus simples. Le travaillé. –
@ JamesWilson De rien, content que cela ait aidé! –