【问题标题】:How Join this tables in MySQL to make a relational query? [closed]如何在 MySQL 中加入这些表以进行关系查询? [关闭]
【发布时间】:2015-04-10 19:21:53
【问题描述】:

当我对开发有疑问时,我正在关注这个完美的地方。

我有以下问题:

我正在开发一个应用程序,其中的数据库配置如下:

创建orgbarriersorggeographsorgrpds 等表是为了保存组织 ID 与障碍 ID、地理范围和角色之间的关系。

现在,我需要 JOIN 所有相关表格,但我不知道如何制作。

另外,我不知道我是否正确地制作了表格。我需要的是:分配给组织 -> 障碍、角色和地理范围,然后用“加入”信息显示每个组织的信息。

这里是小提琴:http://sqlfiddle.com/#!9/dc5f8

我需要知道如何在一个或可能的情况下获取所有相关表。

【问题讨论】:

  • 您的问题是什么
  • 使用 mongodb 或其他 nosql 引擎要好得多。
  • 我的问题是如何加入所有表格并为每个组织分配障碍等!
  • 你确定用户->组织有一对多的关系吗?一个用户可以拥有/管理多个组织?
  • @azure1 不适用于关系数据...

标签: php mysql join


【解决方案1】:

你可以从我相信的这个查询开始:

SELECT o.*, b.*, g.*
FROM organizations o
LEFT JOIN orgbarriers ob
ON ob.idOrg = o.id
LEFT JOIN barriers b
ON ob.idBarrier = b.id
LEFT JOIN orggeographs og
ON og.idOrg = o.id
LEFT JOIN geographs g
ON og.idGeo = g.id

【讨论】:

  • 非常感谢亚历克斯。我已经尝试过这种方式,但它似乎不正确,因为我得到了像图像一样的 NULL 值:postimg.org/image/c442aha57我不知道为什么
  • @AndrewB 你应该提供数据样本来讨论更多。如果您的某些组织在 orgbarriers 中没有相关记录 - 如果您看到 nuuls 就可以了
  • 告诉我你需要什么,我很乐意分享.. 非常感谢!
  • @AndrewB 我需要你所有表格的数据样本
  • @AndrewB 你在开玩笑吗?我应该作为数据输入操作员为您工作吗?将其作为文本放入您的问题中,或者更好地创建 sql fiddle。我不需要理解。我很确定查询没问题。问题是你的期望。所以你唯一应该调查的是那些你不喜欢的记录的组织ID。然后进行过滤以调查您的真实数据是什么。
【解决方案2】:

@Alex,当我看到你的回答时,我刚刚完成了这个;-)

select 
    * 
from organizations
    left join orgbarriers on organizations.id = orgbarriers.idOrg
        join barriers on orgbarriers.idBarrier = barriers.id
    left join orggeographs on organizations.id = orggeographs.idOrg
        join geographs on orggeographs.idGeo = geographs.id
    left join orgrpds on organizations.id = orgrpds .idOrg
        join rpd on orgrpds.idRPD = rpd.id
    left join users on organizations.idUser = users.id

【讨论】:

  • 感谢您尝试帮助我!我在您的查询中更改了一些不正确的字段名称,但是.. 我得到空结果.. 更正的查询:select * from organizations left join orgbarriers on organizations.id = orgbarriers.idOrg join barrier on orgbarriers.idBarrier = barrier.id左加入orggeographs on organizations.id = orggeographs.idOrg 加入geographs 上orggeographs.idGeo = geographs.id 左加入orgrpds on organizations.id = orgrpds .idOrg 加入rpd 上orgrpds.idRPD = rpd.id 加入用户 organizations.idUser = users .id
  • try "left join users on organization.idUser = users.id"
  • 得到相同的空结果:(
  • 这些表中有数据吗?
  • @Andrew:也许您可以创建a fiddle 来说明您的问题?诸如“结果相同”或“不工作”之类的回答并不能真正说明您的结果。
猜你喜欢
  • 1970-01-01
  • 2014-01-03
  • 2016-10-11
  • 2017-04-05
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
相关资源
最近更新 更多