【问题标题】:Construct a mysql query and/or php code to associate ambiguous data points构造一个 mysql 查询和/或 php 代码来关联不明确的数据点
【发布时间】:2014-02-01 00:39:18
【问题描述】:

我不确定我要的是一个特定的查询还是可以解决这个问题的 php 代码,也许我要的是一个应用程序。我会尽力说明情况。

想象一系列现实世界的物理组件以及它们连接在一起时形成的网络。每个组件都有两个Terminals,这些终端与Nodes 连接,从概念上我们可以看到网络连接的一小部分:

Object1 100000051
        100000052

Node1   400000051

Object2 100000053
        100000054

Node2   400000052

在此示例中,Object1 中的 Terminal 2 连接到 Node1,同样Object2 中的 Terminal 1 连接到 Node1。此查询/php 的目标是描述这种连接性。

数据库中的数据样本:

Object table:
ObjectID(PK)   TerminalID1   TerminalID2
200000011      100000051    100000052

Node table:
NodeID(PK)
400000051

Terminal table:
TerminalID(PK)   NodeID
100000052      400000051

如果我想描述连通性,我必须检查数据中的连接,到目前为止我有:

每个Object 有两个Terminals

每个Terminal 都有一个关联的Node ID

如果我想用数百条相似的数据向下一行,我想要一种方法来拉取每个节点,然后每个组件都连接到该节点。我觉得我在这里遗漏了一些东西,无论是在概念上还是在我的模式存在的方式上。给定正确的架构,甚至有办法做到这一点吗?我需要只提取所有数据,然后创建一个算法来组装它们吗?

【问题讨论】:

    标签: php mysql sql database database-design


    【解决方案1】:

    给定一个起始对象 ID,您可以获得它所连接的 ID:

    SELECT t.NodeID neighbor
    FROM Object AS o
    JOIN Terminal AS t ON t.TerminalID = o.TerminalID1
    WHERE o.ObjectID = <starting ID>
    UNION
    SELECT t.NodeID neighbor
    FROM Object AS o
    JOIN Terminal AS t ON t.TerminalID = o.TerminalID2
    WHERE o.ObjectID = <starting ID>
    

    如果您想获得所有连接节点的完整网络,则必须使用之前检索到的 ID 反复执行此操作。确保检查重复项,否则如果有循环,您最终会无限循环。

    【讨论】:

    • 快速提问...这是否取决于对象、节点或终端 ID 的顺序?我之所以这样问,是因为在某些情况下 ID 不按顺序排列,只是分散。
    【解决方案2】:
     SELECT Terminal.NodeID, Object.ObjectID, Object.TerminalID1, Object.TerminalID2
     FROM Terminal
     INNER JOIN Object
     ON Terminal.TerminalID=Object.TerminalID2
    

    这应该可以满足您的需求。 我不完全确定它会如何与重复项做出反应,因此您可能想要添加 Distinct 但我认为这是完成它的一种简单方法

    【讨论】:

    • 我也会问你同样的问题,所以...这是否取决于对象、节点或终端 ID 的顺序?我之所以这样问,是因为在某些情况下 ID 不按顺序排列,只是分散。
    • 不,不需要订购 只要在Terminal中有一行有终端的ID和对应的Node的ID,一切都会正常
    猜你喜欢
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 2015-03-02
    • 2023-03-22
    • 1970-01-01
    • 2022-01-22
    • 2011-08-21
    相关资源
    最近更新 更多