繁体   English   中英

SQL查询-如何联接/联合3个表(2个索引表和1个数据表)

[英]sql query - how to join/union 3 tables (2 index tables and 1 data table)

我有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 ...

有任何想法吗?

谢谢!

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

该查询从两个表中返回数据,并对其进行正确排序:请查看我制作的此示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM