2013-08-14 2 views
-1

У меня есть приложение, в котором я показываю все жалобы на мои зарегистрированные агенты. У меня есть 100 агентов, которые можно увидеть ту же жалобу screen.for например Agenta и agentB могут видеть все жалобы, когда они вошли в систему.Жалобы База данных Design-SQL Query, чтобы показать все строки

> Complaint_id Complaint_detail 
     1   complaint_1  
     2   complaint_2  
     3   complaint_3  

Теперь проблема, я должен добавить функциональность, что каждый агент может добавьте комментарии для их удобства или вы можете сказать напоминание, как (agentA поместить комментарий: я буду работать над этим комментарием завтра). поэтому этот комментарий будет отображаться только для агента.

для реализации этого я создал новую таблицу с именем complaint_detail, где я добавить coloumn «комментарий» и «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 

для agentB

complaint_id complaint_detail comment  user_id 
    1    complaint_1   complaint1_ agentB 
    3    complaint_3   null   null 

любая идея, как я могу добиться этого, что каждый пользователь может видеть все жалобы и только их comments.should я изменить структуру таблицы или запрос может это сделать?

ответ

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 

Это позволит получить данные из комментариев таблицы, связанной с жалобой, если она существует (левое соединение) и ограничить комментарии к тем агента или без идентификатора пользователя на комментарий

Конечно, вы можете указать столбцы в выборе, если вы не хотите извлекать все столбцы из жалоб & таблиц комментариев.

+0

Фактически это мое мнение. Я не могу передать идентификатор пользователя в этом запросе. Мне нужно получить данные из моего запроса и фильтровать пользователя на стороне клиента. –

+0

Вам нужны все жалобы + комментарии с информацией о идентификаторе пользователя для фильтрации позже? – missdefying

+0

да, это мое требование –

Смежные вопросы