首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL Join语句- im丢失

MYSQL Join语句- im丢失
EN

Stack Overflow用户
提问于 2011-11-12 04:01:25
回答 3查看 83关注 0票数 1

好的,我需要从多个表中获取一些数据,每个表都有一个键。

项目(密钥id) Projects_users (key:project_id,user_id)用户(密钥id)

基本上每个项目可以有N个用户。我需要得到一个格式化的响应在每个项目中的所有用户。

例如:

代码语言:javascript
复制
projects = {[

     1: {
          'title':'Project 1',
          'users': [
                1: { id: 23, name:'john' },
                2: { id: 55, name:'sally' }
          ]
     }

     2: {
          'title':'Project 2',
          'users': [
                1: { id: 41, name:'jeff' },
                2: { id: 55, name:'sally' }
          ]
     }

]}

此外,我知道我可以在PHP中使用多条MYSQL语句来完成此任务。这样做会不会更快,用PHP进行连接,或者让MYSQL做这件事会更高效/更快。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-12 04:13:22

您可以使用以下语句来获取所需的数据:

代码语言:javascript
复制
SELECT `Projects`.*, `Users`.* FROM 
    `Projects` JOIN (
        `Projects_users` JOIN 
            `Users` 
            ON `Projects_users`.`user_id` = `Users`.`id`
        ) 
        ON `Projects`.`id` = `Projects_users`.`project_id` 
    ORDER BY `Projects`.`id`

之后,您可以在单次遍历中遍历结果表并构建所需的数组。

票数 0
EN

Stack Overflow用户

发布于 2011-11-12 04:06:11

我还没有试过,但它应该和你想要的很接近:

代码语言:javascript
复制
select p.title, u.name 
from  projects p inner join users u
  on p.id = u.id
order by p.title

您需要“连接”来获取数据..但是使用PHP对其进行格式化。

PS:"projects“是一个表,"users”是第二个表……"projects“表需要保存用户ID 23、55和41的”外键“。

票数 0
EN

Stack Overflow用户

发布于 2011-11-12 04:06:34

MySql不能像您所希望的那样以树状结构返回数据。您可以通过两种方式完成此操作:

  1. 获取一个数据集中的所有项目,以及与第二个数据集中的这些项目相关联的所有用户。您必须编写生成所需JSON对象的代码。
  2. 只获取一个数据集,执行项目表与用户表的内部连接。您将获得许多列上的重复信息,但您将在一条sql语句中获得所有信息。然后可以遍历结果集并生成所需的结构。

如果您需要有关内连接的帮助,它将类似于:

代码语言:javascript
复制
select p.title, u.id, u.name 
from projects p 
inner join project_users pu on pu.project_id=p.id 
inner join users u on u.id=pu.user_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8099272

复制
相关文章

相似问题

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