MySQL联合和左连接组合

时间:2013-12-07 21:20:27

标签: mysql sql

数据库结构

users
------
user_id
contact_person
company
timestamp

trading
--------
user_id
timestamp
buying_selling

我正在尝试找到查询db

的最有效方法

我希望建立一个事件的时间表,从我的注册和交易板中提取数据。

两者都有我需要按顺序排列的时间戳并添加用户信息(谁发布/加入)

用户信息表还有一个加入时间的时间戳。

我正在努力解决这个问题,这是我认为我需要的(语法不对,因为我不知道怎么做)

SELECT user_id, timestamp, 'signup' as type FROM users
UNION 
SELECT user_id, timestamp, 'trade' as type FROM trading
lEFT JOIN
company, contact_person FROM users
ON user_id 

这是我尝试的(不太正确)

SELECT
*
FROM
users
LEFT JOIN
(
SELECT user_id, timestamp, 'signup' as type FROM users
UNION 
SELECT user_id, timestamp, 'trade' as type FROM trading
) foo ON users.user_id = foo.user_id 

我通过查看其他帖子将其混合在一起,但它不完全正确,因为它提取了所有用户信息,最终得到了两个我无法订购的时间戳。

1 个答案:

答案 0 :(得分:2)

以这种方式试试

SELECT user_id, contact_person, company, timestamp, 'signup' type 
  FROM users
 UNION ALL
SELECT t.user_id, u.contact_person, u.company, t.timestamp, 'trade' 
  FROM trading t JOIN users u
    ON t.user_id = u.user_id
ORDER BY timestamp

这是 SQLFiddle 演示