Как получить запись с тем же идентификатором, который пришел из двух запросов?
Первый запрос:
SELECT
final.id,
mutasi.nomor_voucher,
SUM(detail.pembayaran) as pembayaran
FROM petty_cash_mutasi_kas mutasi
INNER JOIN petty_cash_bukti_pengeluaran keluar
ON keluar.id = mutasi.petty_cash_bukti_pengeluaran_id
INNER JOIN job_order_final final
ON final.id = keluar.job_order_final_id
INNER JOIN job_order_final_detail detail
ON detail.job_order_final_id = final.id
INNER JOIN job_order job_order
ON job_order.id = final.job_order_id
WHERE keluar.id IS NOT NULL
GROUP BY mutasi.id
Результат выглядит так:
+-----+---------------+------------+
| id | nomor_voucher | pembayaran |
+-----+---------------+------------+
| 215 | CP00000001 | 7500000.00 |
+-----+---------------+------------+
1 row in set
И второй запрос:
SELECT
final.id,
mutasi.nomor_voucher,
keluar.kasbon_id
FROM petty_cash_mutasi_kas mutasi
LEFT JOIN petty_cash_bukti_pengeluaran keluar
ON keluar.id = mutasi.petty_cash_bukti_pengeluaran_id
LEFT JOIN kasbon kasbon
ON kasbon.id = keluar.kasbon_id
LEFT JOIN job_order_detail detail
ON detail.kasbon_id = kasbon.id
LEFT JOIN job_order job_order
ON job_order.id = detail.job_order_id
LEFT JOIN job_order_final final
ON job_order.id = final.job_order_id
WHERE
keluar.id IS NOT NULL
AND keluar.job_order_final_id IS NULL
Результатом второго запроса является:
+-----+---------------+-----------+
| id | nomor_voucher | pembayaran|
+-----+---------------+-----------+
| 215 | KB00000001 | 110 |
| 215 | KB00000002 | 111 |
| 223 | KB00000003 | 112 |
+-----+---------------+-----------+
Как вы можете видеть, есть идентификатор с единичным значением, 213, 215
Мне нужен результат, подобный этому.
+-----+---------------+-----------+
| id | nomor_voucher | pembayaran|
+-----+---------------+-----------+
| 215 | KB00000001 | 110 |
| 215 | KB00000002 | 111 |
| 215 | CP00000001 | 7500000.00|
+-----+---------------+-----------+
А также, как получить только id 223
+-----+---------------+-----------+
| id | nomor_voucher | pembayaran|
+-----+---------------+-----------+
| 223 | KB00000003 | 112 |
+-----+---------------+-----------+
Пожалуйста, дайте мне совет, какие ключи я должен сделать, чтобы получить такой результат?
Select * from
(yourFirstQuery) q1
left join
(yourSecondQuery
) q2 on q1.id=q2.id
Это вернет первый результат, который вы хотите.
SELECT
final.id,
mutasi.nomor_voucher,
keluar.kasbon_id
FROM petty_cash_mutasi_kas mutasi
LEFT JOIN petty_cash_bukti_pengeluaran keluar
ON keluar.id = mutasi.petty_cash_bukti_pengeluaran_id
LEFT JOIN kasbon kasbon
ON kasbon.id = keluar.kasbon_id
LEFT JOIN job_order_detail detail
ON detail.kasbon_id = kasbon.id
LEFT JOIN job_order job_order
ON job_order.id = detail.job_order_id
LEFT JOIN job_order_final final
ON job_order.id = final.job_order_id
WHERE
keluar.id IS NOT NULL
AND keluar.job_order_final_id IS NULL
and final.id not in
(
SELECT
final.id
FROM petty_cash_mutasi_kas mutasi
INNER JOIN petty_cash_bukti_pengeluaran keluar
ON keluar.id = mutasi.petty_cash_bukti_pengeluaran_id
INNER JOIN job_order_final final
ON final.id = keluar.job_order_final_id
INNER JOIN job_order_final_detail detail
ON detail.job_order_final_id = final.id
INNER JOIN job_order job_order
ON job_order.id = final.job_order_id
WHERE keluar.id IS NOT NULL
GROUP BY mutasi.id)
Это вернет второй результат с id = 223