0

私は3つのテーブルを持っています:

1. user    => user_id[Pk], user_name
2. payment => payment_id[PK], user_id[FK], amount
3. receive => receive_id[PK], user_id[FK], amount

今、私は次のようなレコードを取得したい:

ユーザー名、支払金額、受取金額

前もって感謝します..

これを読みましたが、うまくいきません。

ユーザーテーブルで

user_id user_name
1 ABC
2 XYZ

支払い表で

payment_id user_id 金額
1 1 1000
2 1 200
3 2 150

受信テーブル:
receive_id user_id amount
1 2 100
2 1 200

今、私は次のような記録が欲しい

user_name 支払金額 受取金額
ABC 1000 200
ABC 200
XYZ 150 100

4

5 に答える 5

2

user_id ごとに金額を合計したい場合があります。

SELECT
    user.user_id,
    SUM(payment.amount) AS payment_amount,
    SUM(receive.amount) AS receive_amount
FROM (receive INNER JOIN [user] ON receive.user_id = user.user_id)
              INNER JOIN payment ON user.user_id = payment.user_id
GROUP BY user.user_id;
于 2012-09-15T19:18:22.853 に答える
1

組み込みのクエリデザイナを使用します。3つのテーブルをその中にドラッグし、キーをリンクして(フィールドを相互にドラッグアンドドロップし)、それらを追加するフィールドを下部のフィールドリストにダブルクリックして、クエリを実行します。必要に応じて集計式を選択します。

于 2012-09-15T21:14:01.350 に答える
0
select t1.user_name, t2.amount payementamount, t3.amount receiveableamount from 
User t1,
payment t2,
receive t3
where
t1.user_id=t2.user_id and
t1.user_id=t3.user_id

これを試すことができます....

于 2012-09-15T19:21:02.697 に答える
0

これを MSAccess 構文に適合させる必要があるLEFT JOINかもしれませんが、親テーブルであり、他の 2 つのテーブルにはこのユーザーのレコードがある場合とない場合があるため、支払いと受け取りのテーブルをユーザーで実行することが考えられます。

SELECT 
    u.user_name, 
    ISNULL(p.amount, 0) as paymentamount,
    ISNULL(r.amount, 0) as receivableamount
FROM 
    user u
    LEFT JOIN payment p
    ON u.user_id = p.user_id
    LEFT JOIN receive r
    ON u.user_id = r.user_id
于 2012-09-15T19:15:31.560 に答える
0
select 
    user.user_name, payment.amount, receive.amount 
from user 
    join payment on user.user_id == payment.user_id 
    join receive on user.user_id = receive.user_id; 
于 2012-09-15T19:17:13.277 に答える