您好我有两个表event_service和appointment_feedback event_service表中的两条记录和appointment_feedback中的一条记录 所以我希望匹配记录与event_service表和空记录 appointment_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
我已尝试过以下查询,但它没有给出null值,它给出了重复的注释值,即测试,但它在appointment_feedback表中只有一个条目,所以我想要来自event_service表的两条记录 来自appointment_feedback表的一条记录与之对应 记录。
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
答案 0 :(得分:1)
我使用简单的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
<强>输出:强>
答案 1 :(得分:0)
根据你的问题,你有合适的工具,但你错过了使用它们。
这是您当前的查询:
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
和左连接appointment_feedback
中进行选择,这应该是您的新查询:
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执行从第一个(最左侧)表开始的连接,然后是任何匹配的第二个(最右侧)表记录。