0

我有 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 个数据表(名为 'users'),所以查询是这样的:

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个表一次)

所以现在我不能用 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...

有任何想法吗?

谢谢!

4

1 回答 1

1

你的权利 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;

查询从两个表中返回数据,并正确排序:看看我做的这个例子

于 2013-03-21T04:45:40.083 回答