查询一个表中所有数据并关联查询该表ID对应另一个表数据。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询一个表中所有数据并关联查询该表ID对应另一个表数据。相关的知识,希望对你有一定的参考价值。
要查出一个A表中所有数据,并关联查询该表中accid账号对应的其他表B的数据,但另一个表数据可以为空。结果集中必须有全部A表信息,B表中信息可以为空。
在SqlServer中可以这样来查询:select A.*,B* from A left join B on A.accid=B.accid
在Oracle中可以这样来查询:
select A.*,B* from A left join B on A.accid=B.accid
或
select A.*,B* from A,B where A.accid=B.accid(+)
mysql中和SqlServer类似,就不多说了,还有其他的数据库也不一一做说明了
以上,希望对你有所帮助! 参考技术A select A.*,B*
from A
left join B
on A.accid=B.accid;
要用左外连接 参考技术B select A.* from A as a inner join B as b on a.accid=b.accid where 要查询的字段
MySQL查询 - 一个表中的单行,另一个表中的多行
【中文标题】MySQL查询 - 一个表中的单行,另一个表中的多行【英文标题】:MySQL query - single row in one table with multiple rows in another table 【发布时间】:2014-11-08 07:27:14 【问题描述】:我有以下数据模型
Table: User
USER ID
USER NAME
Table: Group
GROUP ID
GROUP NAME
Table: User Group
GROUP ID
USER ID
我正在尝试显示一个包含所有组名和关联用户的屏幕 - 前端是 PHP
我的查询如下 -
`SELECT a.group_id,
a.group_name,
GROUP_CONCAT(g.user_id) AS user_ids,
GROUP_CONCAT(u.user_fname) AS user_names
FROM group a, user_group g, user u
WHERE a.group_id = g.group_id
AND g.user_id = u.user_id
GROUP BY a.group_id`
我的问题:正如您从上面的查询中看到的那样 - 我必须有两个表示用户 ID 和用户名的串联字符串列表。这在 PHP 中变得很头疼,因为我必须这样做 1. 将两个连接的字符串分解成数组 2. 循环遍历两个数组并从中构造用户对象 3.然后将对象数组传递过来
有没有更有效/更好的方法来做到这一点?任何建议,指针将不胜感激。
【问题讨论】:
【参考方案1】:您只需要一份清单吗?
SELECT g.group_id, g.group_name,
GROUP_CONCAT(g.user_id, ':', u.user_fname) AS names_and_ids
FROM group g join
user_group ug
on g.group_id = ug.group_id join
user u
on ug.user_id = u.user_id
GROUP BY g.group_id, g.group_name;
注意以下变化:
我添加了一个group by
,这样您就可以得到每组一行。
我将别名更改为表名的缩写,这样查询更容易阅读。
我修改了group_concat()
以在一个列表中同时包含用户 ID 和用户名。
我将join
更改为使用显式join
语法,而不是where
子句中的隐式连接。
【讨论】:
谢谢 - 是的,我有一个 group by 子句,我只是错过了输入。如果我按照您的建议进行操作,我将不得不在 PHP 中拆分所有连接的用户 ID 和名称。我希望有某种方法可以从 MySQL 中返回关联的数组。也许我只是希望太多 - 如果我没有看到任何更好的回应,我会接受你的 有一个叫做mysqli_fetch_assoc()
的东西。也许这就是你想要的。以上是关于查询一个表中所有数据并关联查询该表ID对应另一个表数据。的主要内容,如果未能解决你的问题,请参考以下文章
sql中有关联的两个表,怎么查出一个表中没有对应到另一个表的数据?
关于oracle中 根据一个表的主键数据同步更新另一个关联表的字段。