У меня есть основная таблица (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)
У вас есть несколько строк в UserInfo/AllLists или в тех, которые соответствуют критериям в вашем on-разделе. Посмотрите на некоторые «обманы», а затем проверьте их в отдельных таблицах. – SQLChao
Я вижу вашу точку зрения. На самом деле, мне просто нужно отличить столбец LeafName от AllDocs. –
Когда LEFT JOIN, поставьте условия правой стороны таблицы в предложение ON, чтобы получить истинное поведение левого соединения. Когда в ГДЕ вы получаете результат внутреннего соединения. – jarlh