システムのすべてのユーザーが格納されているデータベースにユーザーテーブルがあります。 テーブルにはuser_idとbusiness_nameとfirst_nameがあります。 一部のユーザーは商人であり、企業名を取得しています。 一部のユーザーはコンシューマーであり、名を取得しています。 2番目のテーブルには、user_idとmerchant_id(トランザクションを定義している)と金額のトランザクションがあります。どちらのIDもユーザーテーブルを参照します。1つのmysqlテーブルから異なる結果を得るには?
Table users:
user_id bus_name first_name role_id
1 Thomas 10
2 comp1 7
3 Peter 10
4 comp2 7
(role_id is defining with 10=consumer, 7=merchant)
Table transactions:
trans_id amount user_id merchant_id
1 12 1 2
2 23 3 2
3 34 3 4
4 19 1 4
は今、私は1つのテーブルとして結果でクエリを持ちたい: この表は、量、USER_ID、FIRST_NAME、merchant_idとbus_nameとの取引を含める必要があります。
私はこの結果を取得したい:
trans_id amount user_id first_name merchant_id bus_name
1 12 1 Thomas 2 comp1
2 23 3 Peter 2 comp1
3 34 3 Peter 4 comp2
4 19 1 Thomas 4 comp2
私は私だけFIRST_NAMEと空bus_nameを取得したり、私がbus_nameが、空のfirst_nameのみを取得するのどちらかという問題があります。
...
left join `users`
on(
(`transactions`.`user_id` = `users`.`user_id`)
)
...
をしかし、このために、私はのuser_id = 1 FIRST_NAME =トーマスとbus_name =「」私はまた、テーブル内の1つの行に参照していないので、空になるためになるだろう:私は左を使用しています が参加しますuser_id = 2の別のユーザーに送信します。
は、しかし、私は何か言いたい:あなたの助けのための
for trans_id=1
get first_name FROM users WHERE transactions.user_id = users.user_id
AND
get bus_name FROM users WHERE transactions.merchant_id = users.user_id
おかげで、私はたくさんのことを試してみましたが、それは動作しません。
偉大な、ありがとう、それは働いた! – user3899575