我有一个用户表在系统的所有用户都存储在数据库中。 该表具有user_id和business_name以及first_name。 一些用户是商家,并获得企业名称, 一些用户是消费者,并获得一个名字。 在第二个表中,我有一个user_id和一个merchant_id(它们定义了交易)和金额的交易。两个id都引用用户表。如何从一个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
现在我想有一个结果作为一个表的查询: 此表应包含与量,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 =“”是空的,因为我只引用一个行表和未还给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