首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL一对多查询

mySQL一对多查询
EN

Stack Overflow用户
提问于 2010-04-11 15:39:59
回答 1查看 5.8K关注 0票数 3

我有3个这样的表(在这里简化了ofc):

  • user_id
  • user_name

  • 用户

  • info_id
  • user_id
  • rate

  • info

  • contact_id
  • user_id
  • contact_data

  • contacts

用户与信息有一对一的关系,尽管信息并不总是有相关的条目。

用户与联系人有一对多的关系,尽管联系人并不总是有相关的条目。

我知道我可以用一个左联接来获取适当的‘用户’+‘信息’,有什么方法可以一次得到我想要的所有数据吗?

例如,返回的一个记录可能是:

代码语言:javascript
复制
user_id: 5
user_name: tom
info_id: 1
rate: 25.00
contact_id: 7
contact_data: 555-1212
contact_id: 8
contact_data: 555-1315
contact_id: 9
contact_data: 555-5511

单次查询就可以做到这一点吗?还是我必须使用倍数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-11 15:51:31

每一行结果都必须有相同的列,因此不能聚合多行联系人,而其他列也不具有。

希望此查询能够实现您所需的功能:

代码语言:javascript
复制
SELECT
    u.user_id as user_id,
    u.user_name as user_name,
    i.info_id as info_id,
    i.rate as rate,
    c.contact_id as contact_id,
    c.contact_data as contact_data
FROM users as u
LEFT JOIN info as i ON i.user_id = u.user_id
LEFT JOIN contacts as c ON c.user_id = u.user_id
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2617559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档