[英]MySQL: Using JOINS with WHERE clause to get all records from one table and available records from the other
[英]How to get all records from one table and null with other table
嗨,我有兩個表event_service和約會約會,其中我在event_service表中有兩個記錄,在booking_feedback中有一個記錄,因此我想將記錄與event_service表匹配,將空記錄與約會_feedback匹配。
請遵循我的表格結構
第一個表: event_service
....................................
evsr_id evsr_ev_id staff_id
....................................
1 101 1
2 101 2
第二張表: appoitment_feedback
....................................
fd_id fd_app_id fd_comment
....................................
1 101 test
我想要這個輸出:
.................................................
evsr_id evsr_ev_id staff_id fd_comment
.................................................
1 101 1 test
2 101 2 null
我已經在下面的查詢中嘗試過,但是它沒有給出空值,而是給出了注釋的重復值,即test,但是在ational_feedback表中只有一個條目,因此我想從event_service表中獲得兩個記錄,從約會和反饋表中獲得一個記錄,並與該記錄相對應。
SELECT appointment_feedback.`fd_id`,`fd_app_id`,`fd_comment`,`fd_service_rat`
FROM event_service
left join `appointment_feedback`
on event_service.evsr_ev_id=appointment_feedback.fd_app_id
WHERE appointment_feedback.fd_app_id='3959'
該查詢給出了錯誤的輸出:-
..............................................
fd_id fd_app_id fd_comment fd_service_rat
.............................................
1 101 test 0
1 101 test 0
我已經使用了簡單的LEFT JOIN來提供請求的輸出。
DECLARE @event_service AS Table
(
evsr_id INT,
evsr_ev_id INT,
staff_id INT
)
DECLARE @appoitment_feedback AS Table
(
fd_id INT,
fd_app_id INT,
fd_comment VARCHAR(50)
)
INSERT INTO @event_service VALUES(1,101,1)
INSERT INTO @event_service VALUES(2,101,2)
INSERT INTO @appoitment_feedback VALUES(1,101,'test')
SELECT
es.*,
af.fd_comment
FROM @event_service es
LEFT JOIN @appoitment_feedback af ON es.evsr_ev_id=af.fd_app_id
AND es.evsr_id=af.fd_id
輸出:
根據您的問題,您擁有正確的工具,但未正確使用它們。
這是您當前的查詢:
SELECT appointment_feedback.`fd_id`,`fd_app_id`,`fd_comment`,`fd_service_rat` FROM `appointment_feedback` left join event_service on event_service.evsr_ev_id=appointment_feedback.fd_app_id WHERE appointment_feedback.fd_app_id='3959'
您所需要做的就是交換表,以便從event_service
選擇,並保留join appointment_feedback
event_service
,因此這應該是您的新查詢:
SELECT appointment_feedback.`fd_id`,`fd_app_id`,`fd_comment`,`fd_service_rat`
FROM event_service
left join `appointment_feedback`
on event_service.evsr_ev_id=appointment_feedback.fd_app_id
WHERE appointment_feedback.fd_app_id='3959'
LEFT JOIN從第一個(最左側)表開始,然后是任何匹配的第二個(最右側)表記錄開始執行聯接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.