2017-03-31 3 views
0

Ich habe TabellenWarum funktioniert meine Abfrage nicht für einen bestimmten Parameter?

  1. SystemUsers
  2. Beschwerden
  3. Mappings

verwendet wird, Website-Nutzer zu registrieren. ist für das Speichern Beschwerden

ich später diskutieren.

Wenn eine Reklamation empfangen wird, wird sie einem Systembenutzer zugewiesen, d. H. AssignToUser_ID in der Reklamationstabelle.

Beschwerden:

  1. CompaintID
  2. Datum
  3. AssignToUser_ID

Nun, wenn ein Benutzer Beschwerden betrachten möchte dann nur die Beschwerden angezeigt werden sollen, die zu einer ihm nicht anderen zugeordnet wurden und das ist der Teil, den ich gelöst habe, aber ....

Jetzt werde ich M diskutieren APPING Tabelle.

Mapping:

  1. mappingId
  2. SystemUser_ID
  3. AssignToUser_ID

Diese Tabelle verwendet wird nominierten systemusers zu speichern, dh wenn ein mir zugewiesen wurde beschwert und ich entscheide, es zu ordnen ein anderer Benutzer auch, damit er auch die Beschwerden sehen kann, die mir tatsächlich zugewiesen wurden, dann wäre es möglich. Nun habe ich diesen Teil irgendwie gelöst, aber das Problem ist, dass wenn ich mich als ein nominierter Benutzer anmelde, ich die Beschwerden anzeigen kann, die dem tatsächlichen Benutzer zugewiesen wurden, aber wenn ich mich als ursprünglicher Benutzer anmelde, kann ich die zugewiesenen Beschwerden nicht sehen.

Mein Versuch:

CREATE Procedure [dbo].[usp_getAllMarkedComplaints] 
(


    @SystemUser_ID int 

) 
AS 
Begin 

if exists (Select * from mapping where systemuser_id = @SystemUser_ID) 
begin 
     Select * From dbo.Complaints Comp 
     Where (Comp.AssignToUser_ID IN (select assigntouser_id from mapping where systemuser_id = @SystemUser_ID))  AND 
     Comp.ComplaintStatus_ID <3 
    end 
    else 
    begin 

     Select * From dbo.Complaints Comp 
     Where (Comp.AssignToUser_ID = @SystemUser_ID) AND 
     Comp.ComplaintStatus_ID <3 


    end 
End 
+1

Fragen, die Debugging-Hilfe suchen ("Warum funktioniert dieser Code nicht?") Müssen das gewünschte Verhalten, ein bestimmtes Problem oder einen Fehler und den kürzesten Code enthalten, der in der Frage selbst reproduziert werden muss. Fragen ohne eine klare Problembeschreibung sind für andere Leser nicht nützlich. – TheGameiswar

+0

Ich habe mein Bestes versucht, um das Problem zu beschreiben und vor dem Posten habe ich viel Zeit verbracht und sollte nicht so viel Hardliner sein und nicht jeder ist so perfekt, um einen Beitrag zu veröffentlichen gute Frage. Entschuldigung, aber es ist kein Aufsatzwettbewerb oder sowas. Ich habe geschrieben, was ich fühlte, ich sollte und das ist, was SOF ist für – Covert

+1

Ich verstehe die Mühe, können Sie hier nachschauen und sehen, wie Sie die Frage verbessern können.https: //spaghettidba.com/2015/04/24/how-to -post-at-sql-question-on-a-public-forum/ – TheGameiswar

Antwort

0

Sie verwenden @SystemUser_ID als systemuser_id UND als AssignToUser_ID. Ich denke, dass es sich um zwei verschiedene Begriffe mit einem eigenen Inkrementensystem handelt. Ihre AssignToUser_ID Nr. 1 ist wahrscheinlich nicht die gleiche wie Ihre Systembenutzer-ID Nr. 1.

Je nach Benutzertyp (zugeordnetes OR-System) müssen zwei verschiedene Einträge gemacht werden.

Ein Weg zu gehen:

CREATE Procedure [dbo].[usp_getAllMarkedComplaints] 
(
    @user_ID int, 
    @user_type char(3) 
) 
AS 
Begin 

    if @user_type = 'SYS' 
    begin 
     Select * From dbo.Complaints Comp 
     Where Comp.AssignToUser_ID IN (select assigntouser_id 
             from mapping 
             where systemuser_id = @user_ID) 
     AND Comp.ComplaintStatus_ID <3 
    end 

    if @user_type = 'ASG' 
    begin 

     Select * From dbo.Complaints Comp 
     Where Comp.AssignToUser_ID = @user_ID 
      AND Comp.ComplaintStatus_ID <3 

    end 
End 

andere Art und Weise zu machen, zwei verschiedene gespeicherte Prozedur zu gehen wäre.

+0

funktioniert nicht sir – Covert

+0

gerade bearbeitet, müssen Sie auch Ihren Anruf ändern. Tut mir leid, manchmal habe ich mein Gehirn ausgeschaltet – Lostblue

Verwandte Themen