我有这样的样本数据:
表: SuratKeluar
==========================================
Id NoSuratKeluar Perihal TglSurat
==========================================
a1 111 dataA 20-09-2014
a2 222 dataB 20-09-2014
a3 333 dataC 21-09-2004
a4 444 dataD 21-09-2004
表: SuratKeluarPermission
==================================
Id IdSuratKeluar KodeJabatan
==================================
1 a1 0001
2 a1 0002
3 a3 0001
4 a4 0001
我希望SuratKeluar
显示来自SuratKeluarPermission
的数据:
where KodeJabatan='0001'
所需的输出如下所示:
==========================================
Id NoSuratKeluar Perihal TglSurat
==========================================
a1 111 dataA 20-09-2014
a3 333 dataC 21-09-2004
a4 444 dataD 21-09-2004
答案 0 :(得分:2)
SELECT SuratKeluar.Id, SuratKeluar.NoSuratKeluar, SuratKeluar.Perihal, SuratKeluar.TglSurat
FROM SuratKeluar
JOIN SuratKeluarPermission
ON SuratKeluar.Id = SuratKeluarPermission.IdSuratKeluar
WHERE SuratKeluarPermission.KodeJabatan = '0001'
答案 1 :(得分:0)
这里不能使用union,因为这两个表之间的列数和数据类型不相同。我们可以使用join来获得预期的结果,希望下面的查询应该提供结果:
SELECT
SK.Id,
SK.NoSuratKeluar,
SK.Perihal,
SK.TglSurat
FROM
SuratKeluar AS SK INNER JOIN SuratKeluarPermission AS SKP
ON SK.ID = SKP.IdSuratKeluar
WHERE
SKP.KodeJabatan='0001';
答案 2 :(得分:0)
可以使用INNER JOIN
实现此目的。
SELECT a.Id,a.NoSuratKeluar,a.Perihal,a.TglSurat
FROM SuratKeluar a
JOIN SuratKeluarPermission b
ON a.Id=b.IdSuratKeluar
WHERE b.KodeJabatan='0001';
答案 3 :(得分:0)
我建议使用子查询
过滤Id
select * from SuratKeluar
where Id in (
select IdSuratKeluar from SuratKeluarPermission
where KodeJabatan='0001');
或按exists
声明
select * from SuratKeluar t
where exists (
select * from SuratKeluarPermission
where KodeJabatan='0001'
and IdSuratKeluar=t.Id);