Как удалить повторяющиеся записи из результатов, используя левое соединение в SQL - PullRequest
0 голосов
/ 09 марта 2019

У меня есть три таблицы User, Enquiry и Activity.Когда я делаю INNER и LEFT JOIN, я получаю дублирующиеся записи из-за значений NULL.

Пользователь :

User_id | user_firstName | user_lastName
--------+----------------+--------------
1       | Joe            | Smith 
2       | John           | Doe
3       | Robert         | Smith

Запрос :

EnquiryID  | CreatedBy|  
-----------+------------
1          |     1          
2          |     1           

Активность :

ActivityID | CreatedBy| AssignedBy| AssignedTO
-----------+----------+-----------+----------- 
1          |     1    |    null   |  null      
2          |     1    |      2    |   3       

Ожидаемый результат всех трех результатов объединения:

Enquiry ID |  CreatedBy | AssignedBy | AssignedTO 
-----------+------------+------------+------------
1          |     Joe    |    null    |  null     
2          |     Joe    |      John  |   Rober  

SQL-оператор:

SELECT DISTINCT 
    E.EnquirdID AS Enquiry,
    U.FirstName AS CreatedBy,
    U1.FirstName AS AssignedBy,
    U2.FirstName AS AssignedTo
FROM 
    Enquiry E 
INNER JOIN 
    User U ON E.UserID = U.UserID 
INNER JOIN 
    Activity A ON E.Enquiry = A.EnquiryID
LEFT JOIN 
    User U1 ON A.AssignedBy = U1.UserID 
LEFT JOIN 
    User U2 ON A.AssignedTo = U2.UserID

Я получаю дубликаты Enquiry записей из этого запроса, хотя я использую DISTINCT для EnquiryID

КОНЕЦ РЕЗУЛЬТАТ: мой план заключается в использованииSQL для выбора данных и отображения их в PHP на веб-сайте.Это веб-сайт управления запросами.Я хочу, чтобы PHP мог извлекать переменные из SQL, чтобы я мог использовать их по своему усмотрению.

1 Ответ

0 голосов
/ 09 марта 2019

Похоже, запрос работает должным образом. Я просто исправил некоторые синтаксис и имена столбцов:

SELECT DISTINCT E.EnquiryID as Enquiry, U.user_FirstName as CreatedBY ,U1.user_FirstName as AssignedBY  , U2.user_FirstName as AssignedTO 
FROM Enquiry E inner join [User] U on E.createdby = U.User_ID 
               inner join Activity A on E.EnquiryID = A.createdby
               Left Join [User] U1  on A.AssignedBY = U1.User_ID 
               Left Join [User] U2 on  A.AssignedTO = U2.User_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...