Payment_Detail_Table
payment_detail_id| payment_id | payment_status | total | user_id | company_id
10001 | 10| 1 | 100 1 103
10002 | 11| 2 | 200 1 103
10003 | 12| 2 | 300 2 104
10004 | 13| 1 | 400 2 104
10005 | 14| 0 | 500 1 105
10006 | 15| 2 | 600 1 103
Payment_Table
payment_id| payment_type|
10 | 1 |
11 | 1 |
12 | 1 |
13 | 1 |
14 | 0 |
15 | 0 |
Как получить user_id с payment_type из 1 и payment_type из 0 из Payment_Table?
Цель состоит в том, чтобы обнаружить, что они сделали два вида платежей, и для тех, кто заплатил два из них, они должны иметь payment_status или 2, но если
например, если user_id - это 1, а company_id - это 103, выход должен быть 100+200+600=900.
У этого пользователя с этим company_id есть payment_Type, 0 и 1, и для этих двух условий (payment_type=1 and payment_type=0) успешно завершил их с помощью payment_Status из 2, даже несмотря на то, что ранее у него был неудачный платеж.
Например, payment_detail_id - это 1001, есть payment_status из 1.
@TimBiegeleisen Извините за это, потому что я новичок в stackoverflow, и мне нужно было более быстрое решение.
Вы можете добавить сюда, как выглядит ваш результат
См. meta.stackoverflow.com/questions/333952/…






SELECT
DISTINCT user_id
FROM
Payment_Detail_Table D
WHERE
EXISTS(
SELECT
*
FROM
Payment_Table P1
WHERE
P1.payment_id = D.payment_id
AND
P1.payment_type = 1
)
AND
EXISTS(
SELECT
*
FROM
Payment_Table P2
WHERE
P2.payment_id = D.payment_id
AND
P2.payment_type = 0
)
Я не понимаю остального вопроса (после «Цель - найти ...»)
И почему вы думаете, что это правильный ответ, если вы понимаете только половину вопроса?
@NicoHaase Это ответ на первую часть (на самом деле это единственный задаваемый вопрос: «Как получить user_ids, у которых payment_type = 1, и payment_type = 0, из Payment_Table?»)
Это то, что вы ищите ?
SELECT user_id, company_id
FROM (select payment_detail_table.user_id AS user_id,payment_detail_table.company_id AS company_id
from payment_detail_table
where (EXISTS(SELECT * FROM payment_table WHERE payment_table.payment_id=payment_detail_table.payment_id AND payment_table.payment_type=1)) AND payment_detail_table.payment_status = 2
group by concat(payment_detail_table.user_id,'-',payment_detail_table.company_id)) T1
INNER JOIN
(SELECT payment_detail_table.user_id AS user_id,payment_detail_table.company_id AS company_id
FROM (select payment_detail_table.user_id AS user_id,payment_detail_table.company_id AS company_id
from payment_detail_table
where (EXISTS(SELECT * FROM payment_table WHERE payment_table.payment_id=payment_detail_table.payment_id AND payment_table.payment_type=0)) AND payment_detail_table.payment_status = 2
group by concat(payment_detail_table.user_id,'-',payment_detail_table.company_id)) T2
USING (user_id, company_id)
Пожалуйста, используйте знаки препинания в формулировке проблемы. Сложно уследить.