Получить групповую запись из двух запросов с одинаковым идентификатором

0

Как получить запись с тем же идентификатором, который пришел из двух запросов?

Первый запрос:

    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 |
+-----+---------------+-----------+

Пожалуйста, дайте мне совет, какие ключи я должен сделать, чтобы получить такой результат?

  • 0
    Условие keluar.id IS NOT NULL приводит к тому, что keluar LEFT JOIN возвращает результат INNER JOIN. Вы хотите присоединиться или нет?
  • 0
    stackoverflow.com/help/mcve
Теги:
mariadb

1 ответ

1
Лучший ответ
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

  • 0
    если мой ответ решит вашу проблему, примите как ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню