2013-03-21 59 views
0

我得到3個表,2個索引表和1個數據表SQL查詢 - 如何加入/聯合3個表(2個索引表和1個數據表)

表結構是這樣的:

users

id  | name 
--------+----------- 
1  | John 
2  | Mike 
3  | James 

idxidx2

user_id | user_id2 | action | date 
---------+----------+----------+---------- 
1  | 2  | message | 2013-03-20 
1  | 3  | message | 2013-03-21 
3  | 2  | chat  | 2013-03-21 

前,我才2個表,1個索引表(名爲「IDX」)和1個數據表(名爲「用戶」),所以查詢是這樣的:

SELECT * FROM idx inner join users WHERE idx.user_id='2' and idx.user_id2=users.id ORDER BY idx.date DESC 

,但現在一個新的索引表(命名爲'idx2'),結構類似於'idx'(我不能將'idx'和'idx2'組合成一張表,所以我們需要一次處理3張表格)

so現在我不能讓用3個表

查詢我試圖做這樣的事情:

SELECT * FROM idx,idx2 inner join users WHERE (idx.user_id='2' and idx.user_id2=users.id) or (idx2.user_id='2' and idx2.user_id2=users.id) ORDER BY idx.date DESC 

但這不起作用,我想查詢應包括兩個unionjoin ...

什麼想法?

謝謝!

回答

1

your'r right UNION似乎走的路,但表結構應該匹配, 可以給你更多的信息?可能使用sqlfiddle

這應該這樣做,如果我深知你的問題:

(SELECT * FROM idx inner join users WHERE idx.user_id='2' and idx.user_id2=users.id) 
UNION 
(SELECT * FROM idx2 inner join users WHERE idx2.user_id='2' and idx2.user_id2=users.id) ORDER BY date DESC; 

查詢的兩個表返回數據,並責令其正確:看看這個example我做

+0

刷新頁面請,我已經更新了 – dimaninc 2013-03-21 04:53:02

+0

這個問題,這不能正常工作。 它從'idx'獲取所有記錄,然後從'idx2'獲取所有記錄,但是我需要它們在一個Feed中混合,按日期字段排序 – dimaninc 2013-03-21 13:40:07

+0

您所說的「混合」是什麼意思? – 2013-03-21 15:12:23