2016-05-13 3 views
0

У меня есть основная таблица (AllDocs), и я выполнил запрос, который дает мне 145 записей. И это хорошо. Однако есть несколько полей (таких как listid и userid), поэтому я решил получить заголовки для listid и userid из 2 разных таблиц. Теперь, мой результат - 1870. Я попытался добавить distinct в select, и он уменьшился до 1530. Количество строк должно быть 145. Что я делаю неправильно?Выбор отдельной строки из таблицы

SELECT DISTINCT AllDocs.SiteId, AllDocs.LeafName, AllDocs.ListId, 
       AllDocs.CheckoutUserId, AllDocs.CheckoutDate, 
       UserInfo.tp_Title AS [User Name], UserInfo.tp_Login AS [User ID], 
       UserInfo.tp_Email, AllLists.tp_Title AS [List Name] 
FROM AllDocs 
LEFT OUTER JOIN UserInfo ON AllDocs.CheckoutUserId = UserInfo.tp_ID 
LEFT OUTER JOIN AllLists ON AllDocs.ListId = AllLists.tp_ID 
WHERE (AllDocs.SiteId = 'E2FF98A7-B719-428D-8C30-856F08989691') 
    AND (AllDocs.CheckoutUserId IS NOT NULL)  
+1

У вас есть несколько строк в UserInfo/AllLists или в тех, которые соответствуют критериям в вашем on-разделе. Посмотрите на некоторые «обманы», а затем проверьте их в отдельных таблицах. – SQLChao

+0

Я вижу вашу точку зрения. На самом деле, мне просто нужно отличить столбец LeafName от AllDocs. –

+0

Когда LEFT JOIN, поставьте условия правой стороны таблицы в предложение ON, чтобы получить истинное поведение левого соединения. Когда в ГДЕ вы получаете результат внутреннего соединения. – jarlh

ответ

0

Попробуйте использовать группу по инструкции. Дополнительные строки, скорее всего, возвращаются в запрос.

SELECT AllDocs.SiteId, AllDocs.LeafName, AllDocs.ListId, 
    AllDocs.CheckoutUserId, AllDocs.CheckoutDate, 
    UserInfo.tp_Title AS [User Name], UserInfo.tp_Login AS [User ID], 
      UserInfo.tp_Email, AllLists.tp_Title AS [List Name] 
FROM AllDocs 
LEFT OUTER JOIN UserInfo ON AllDocs.CheckoutUserId = UserInfo.tp_ID 
LEFT OUTER JOIN AllLists ON AllDocs.ListId = AllLists.tp_ID 
WHERE (AllDocs.SiteId = 'E2FF98A7-B719-428D-8C30-856F08989691') 
AND (AllDocs.CheckoutUserId IS NOT NULL) 
Group by AllDocs.SiteId, AllDocs.LeafName, AllDocs.ListId, 
    AllDocs.CheckoutUserId, AllDocs.CheckoutDate, UserInfo.tp_Title UserInfo.tp_Login, UserInfo.tp_Email, AllLists.tp_Title 
+0

Я думаю, что это, возможно, выполнило эту работу. Позвольте мне проверить. –

Смежные вопросы