Saya perlu membuat pekerjaan latar belakang yang memproses tabel untuk mencari baris yang cocok pada id tertentu dengan status yang berbeda. Ini akan menyimpan data baris dalam string untuk membandingkan data terhadap baris dengan id yang cocok.
Saya tahu sintaks untuk mendapatkan data baris tetapi saya belum pernah mencoba membandingkan 2 baris dari tabel yang sama sebelumnya? Bagaimana cara melakukannya? Apakah saya perlu menggunakan variabel untuk menyimpan data dari masing-masing? Atau cara lain?
(Menggunakan SQL Server 2008)
Anda dapat menggabungkan tabel ke tabel itu sendiri sebanyak yang Anda butuhkan, ini disebut self join.
Sebuah alias diberikan ke setiap instance tabel (seperti pada contoh di bawah ini) untuk membedakan satu dari yang lain.
SELECT a.SelfJoinTableID
FROM dbo.SelfJoinTable a
INNER JOIN dbo.SelfJoinTable b
ON a.SelfJoinTableID = b.SelfJoinTableID
INNER JOIN dbo.SelfJoinTable c
ON a.SelfJoinTableID = c.SelfJoinTableID
WHERE a.Status = 'Status to filter a'
AND b.Status = 'Status to filter b'
AND c.Status = 'Status to filter c'
OK, setelah 2 tahun akhirnya saatnya untuk memperbaiki sintaksis:
SELECT t1.value, t2.value
FROM MyTable t1
JOIN MyTable t2
ON t1.id = t2.id
WHERE t1.id = @id
AND t1.status = @status1
AND t2.status = @status2
Sebagian orang merasa sintaksis alternatif berikut ini lebih mudah untuk melihat apa yang sedang terjadi:
select t1.value,t2.value
from MyTable t1
inner join MyTable t2 on
t1.id = t2.id
where t1.id = @id