2016-11-04 8 views
0

Ich habe drei Tabellen hier: DinasHoHeader, DinasHoDetail und Employee.Wählen Sie Query Join Wählen Sie TOP 1

Zuerst habe ich diese Abfrage

select a.KodeDinasHeader,c.Nip,DepartmentCode 
from DinasHoHeader a 
left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader 
left join employee c on b.Nip = c.Nip 
where DepartmentCode = 'IT' 

und ich dieses Ergebnis

KodeDinasHeader Nip  DepartmentCode 
DN0000007  1501971   IT 
DN0000007  1411517   IT 

Wie Sie i KodeDinasHeader erhalten Duplikat sehen. Ich weiß, es liegt daran, dass ich unterschiedliche Nip habe. Weil ich nur KodeDinasHeader und DepartmentCode nur zeigen möchte. Ich versuche, meine Abfrage zu diesem

ändern Ich bekomme leere Ergebnis. Wie kann ich das erreichen?

KodeDinasHeader  DepartmentCode 
    DN0000007   IT 
+0

was wollen Sie damit zu tun? Welches Ergebnis wollen Sie –

Antwort

4

versuchen Sie dies:

select DISTINCT a.KodeDinasHeader,DepartmentCode 
from DinasHoHeader a 
left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader 
left join employee c on b.Nip = c.Nip 
where DepartmentCode = 'IT' 

Hinweis, habe ich hinzugefügt DISTINCT und entfernt die Nip-Spalte aus der Auswahlliste.

+0

Ich vergesse deutlich. Vielen Dank. – YVS1102

+0

kein Problem, könnten Sie die Antwort dann akzeptieren? Vielen Dank. :) – andrews

0

Schreiben Sie Ihre Anfrage so um. Beachten Sie, dass ich eine TOP 1 hinzugefügt habe, so dass Sie keine Spalte entfernen müssen. aber wenn Sie nicht brauchen "Nip" -Säule können Sie diese entfernen

+0

Das OP benötigt Distinct ROWs. Nicht Top 1 REIHE .. –

+0

hmm, du hast Recht –

1

Wenn Sie nicht brauchen, nip dann warum der Tisch Mitarbeiter beitreten? Nothnig gibt an, dass der Abteilungscode zu der Tabelle gehört.

Was darüber,

declare @DeptCode varchar(50)='IT' 
select a.KodeDinasHeader,@DeptCode DepartmentCode 
from DinasHoHeader a 
left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader -- or inner join 
where DepartmentCode = @DeptCode 
Verwandte Themen