查询从名为 user 和 connection 的两个表中获取连接列表

Posted

技术标签:

【中文标题】查询从名为 user 和 connection 的两个表中获取连接列表【英文标题】:Query to get connection list from two tables named user and connection 【发布时间】:2015-07-05 01:08:58 【问题描述】:

用户表:

用户名 |名字 |姓氏 |电子邮件 |密码

1    | Tom        | cruise    |tom@gmail.com |d41d8cd98f00b204e9800998ecf8427e
2    | Tamera     | Manzer    |Tame@yahoo.com|d41d8cd98f00b204e9800998ecf8427e
3    | Vergie     | Manzer    |Vere@live.com |d41d8cd98f00b204e9800998ecf8427e
4    | Elmo       | Milano    |elmo@live.com |d41d8cd98f00b204e9800998ecf8427e

连接表

con_id |用户名 | connected_with |日期

1    | 1        | 2    |2015-04-26
2    | 1        | 3    |2015-04-26
3    | 4        | 1    |2015-04-26

我想查询userid 1的连接。在这个1中,userid与2、3和4连接,所以我怎样才能找到userid 1的连接

【问题讨论】:

从学习mysql查询开始。 【参考方案1】:

您可以从这里得到答案。

Read here

MySql 查询。

SELECT Connection.connected_with, Connection.date
FROM Connection
JOIN User ON User.userid = Connection.userid
WHERE Connection.userid =1

Codeigniter 活动记录

$this->db->select('connected_with', 'date');
$this->db->from('Connection');
$this->db->join('User', 'User.userid' = 'Connection.userid');
$this->db->where('userid', 1);
$this->db->get(); 

就像你在评论中说的,你有两个外键userid & connected_with,你可以使用联合来组合两个查询结果。首先查询你找到Connection.userid=1所在的连接。第二个查询你找到Connection.connected_with=1 所在的连接。然后合并两个结果。

请看下面的代码

SELECT Connection.userid AS 'Connection'
FROM Connection
JOIN User ON User.userid = Connection.connected_with
WHERE Connection.connected_with =1
UNION
SELECT Connection.connected_with
FROM Connection
JOIN User ON User.userid = Connection.userid
WHERE Connection.userid =1

Codeigniter 活动记录

// First Query
$this->db->select('connected_with', 'date');
$this->db->from('Connection');
$this->db->join('User', 'User.userid' = 'Connection.userid');
$this->db->where('userid', 1);
$query = $this->db->get(); 
$subQuery1 = $this->db->_compile_select();

$this->db->_reset_select();

// Second Query
$this->db->select('userid', 'date');
$this->db->from('Connection');
$this->db->join('User', 'User.userid' = 'Connection.connected_with);
$this->db->where('connected_with', 1);
$query = $this->db->get(); 
$subQuery2 = $this->db->_compile_select();

$this->db->_reset_select();

// Union
$this->db->from("($subQuery1 UNION $subQuery2)");
$this->db->get();

输出

+--------------------------+
| Connection for User ID 1 |
+--------------------------+
|                        4 |
|                        2 |
|                        3 |
+--------------------------+

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 在这个查询中我没有得到连接表的记录#3,因为它也与用户 ID 1 @Thomas Kilian 连接 任何人都可以帮助我实际上这里有 2 个相同的外键,所以我有所以我无法获取连接表的记录 #3,因为它也与用户 ID 1 连接 查看我的帖子。我已经对其进行了编辑以包含您想要的答案。 非常感谢@zer0fl4g

以上是关于查询从名为 user 和 connection 的两个表中获取连接列表的主要内容,如果未能解决你的问题,请参考以下文章

无法从数据库 XAMPP 中获取结果 [重复]

房间从查询返回 kotlin 元组

JSON 和 MySQL UPDATE 查询

如何从数据库中获取逗号分隔值

我如何解决 MySQL 中的“max_user_connections”问题?

名为 connect() 的函数如何阻止 MPI C 程序运行?