我有一个应用程序,我向我的登录代理显示所有投诉。 我有100个代理商可以看到相同的投诉屏幕。例如agentA和agentB 他们登录时可以看到所有投诉。
> Complaint_id Complaint_detail
1 complaint_1
2 complaint_2
3 complaint_3
现在问题是我必须添加每个代理可以轻松发表评论的功能,或者你可以说一个提醒(例如,agentA发表评论:我将在明天处理此评论)。所以这个评论只会显示给agentA。
对于此实现,我创建了一个名为complaints_detail的新表,其中我添加了coloumn'comment'和'user_id'
并显示投诉我写查询
select complaint.Complaint_name,complaint.User_ID from complaint
left outer join complaint_detail on complaint.Complaint_id = complaint_detail.complaint_id
此查询显示所有记录,当我过滤用户时,它将仅显示用户记录以解决此问题我添加
select * from (select complaint.Complaint_name,complaint.User_ID from complaint
left outer join complaint_detail on complaint.Complaint_id = complaint_detail.complaint_id
complaint_detail.complaint_info_id
) asdf
其中user_id ='agentA' 或User_ID为空
select * from (
select complaints.complaint_id,complaints.complaint_detail, complaints_detail.comment,complaints_detail.user_id from complaints
left outer join complaints_detail on complaints.Complaint_id = complaints_detail.complaint_id
) asdf
where user_id = 'agentA'
or User_ID is null
是
complaint_id complaint_detail comment user_id
1 complaint_1 complaint_1 agentA
2 complaint_2 complaint_2 agentA
3 complaint_3 null null
代理商B
complaint_id complaint_detail comment user_id
1 complaint_1 complaint1_ agentB
3 complaint_3 null null
任何想法如何实现这一点,每个用户都可以看到所有投诉,只有他们的评论。我应该更改表结构或查询可以做到这一点吗?
答案 0 :(得分:0)
这样的事情应该这样做:
select * from complaints cmp
left outer join comments com on cmp.id=com.complaint_id
and com.user_id='agentA' or com.user_id is null
这将从与投诉相关的评论表中获取数据(如果存在)(左连接) 并将评论限制在代理的评论或评论
上没有用户ID当然,如果您不想从投诉中检索所有列,则可以在选择中指定列。评论表。