alexa-tracking

Main Content

1024
1024
KASKUS
51
244
https://www.kaskus.co.id/thread/52d5b5485ccb17883f00013d/help--sql-case-full-outer-join
HELP : SQL CASE (FULL OUTER JOIN)
Selamat pagi saudara", saya mohon bantuan untuk memecahkan case yg saya cari" sendiri dan masih bikin penasaran sampai saat ini emoticon-Sorry, sebelumnya saya jelasin kondisinya :

Table Buku
Kode_Buku NUMBER(5) PK
Judul_Buku VARCHAR(50)
Nama_Pengarang VARCHAR(30)
Jumlah NUMBER(2)

Table Detail Pinjam
Kode_Pinjam NUMBER(5) PK
Kode_Buku NUMBER(5) FK
Status_Pinjam VARCHAR(15)

Inti casenya saya ingin menampikan ketersediaan data buku yang masih dapat dipinjam tanpa update & mengurangi jumlah pada table buku, dengan cara menjoinkan kedua table dan mengurangi jumlah pada table buku dengan count(kode_buku) pada table detail_pinjam where clause Status_Pinjam = 'Belum_Kembali'. Kepinginya pake Full Outer Join supaya semua data buku yang tidak ada kaitanya di table detail pinjam masih bisa tetap tampil ketersediaanya.

Mungkin dari agan" ada yang bisa bantu saya, mengobati rasa penasaran saya emoticon-Ngakak
post contoh table yg udah ada isinya, kondisi yg dipengenin, sama sql yg udah agan bikin dong
Sayangnya agan tidak menyertakan data awal dan data yang ingin di capai serta database yang di pakai.
Agar kita bisa melihat sudah pass belum SQL-nya.
Dengan asumsi dengan pakai TSQL, kira-kira sql-nya seperti dibawah.
Code:

SELECT
t.[Kode_Buku] AS [Book Code],
t.[Judul_Buku] AS [Title],
t.[Jumlah] AS [Total],
(CASE WHEN p.[Total] IS NULL THEN 0 ELSE p.[Total] END) AS [On Loan],
(t.[Jumlah] - (CASE WHEN p.[Total] IS NULL THEN 0 ELSE p.[Total] END)) AS [Available]
FROM
[Table_Buku] AS t
LEFT JOIN
(
SELECT
COUNT(*) AS [Total],
tp.[Kode_Buku]
FROM
[Table_Pinjam] AS tp
WHERE
tp.[Status] = 'Belum_Kembali'
GROUP BY
tp.[Kode_Buku]
) AS p ON t.[Kode_Buku] = p.[Kode_Buku]