2013-12-07 27 views
0

DB結構MySQL的聯盟和左的連接組合

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 

我一起看了其他帖子,但它不完全正確,因爲它拉扯所有的用戶信息,我最終得到了兩個我不能訂購的時間戳。

+0

你'LEFT JOIN'語法是在你張貼第一個查詢不正確。如果您可以提供關於公司的結構/關係以及聯繫人表格與交易表格的信息,我可以爲您的聯合查詢提供適當的語法。 –

+0

我已經更新了基本的表結構,我試圖列出id,時間戳以及它是註冊還是交易。一旦我有我的列表 - 左用戶用戶ID加入用戶信息。所有的行都需要按時間戳排序desc – Jeff

回答

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演示

+0

Boomtown - 謝謝彼得 – Jeff

+0

@Jeff你很受歡迎。祝你好運 :) – peterm