簡體   English   中英

如何從一個表中獲取所有記錄,而從另一表中獲取空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM