4

我对 SQL 有基本的理解,因此需要帮助,并提前感谢那些回复的人。

我有 2 个表格,一个表格包含标题和可以在这些标题下选择的选项。另一个表链接到该表的实际数据引用以引用标题名称和选项。

我正在尝试执行 SQL 查询来连接这些表,然后在一个表中引用父/子 ID 以从另一个表中提取标题+选定选项,但我得到的只是 ID 号。我已经创建了一个图像,应该解释我想要返回的结果......并且失败了!

这里的这张图片将解释:

http://i.imgur.com/hSPvY.jpg

注意 - 上面,我说不是 18 和 20,我可以让我的结果显示 ID 号..但不是来自父标题和子标题的正确信息。(服务器支持 - 现场访问收费)

这是我使用 SQL 的地方:

    SELECT custom_def_organizations.title
    FROM custom_data_organizations
    INNER JOIN organizations
    ON custom_data_organizations.organization_id = organizations.id
    INNER JOIN custom_def_organizations
    ON custom_def_organizations.parent_id = custom_data_organizations.root_field_id 
    AND custom_def_organizations.id = custom_data_organizations.field_id
4

1 回答 1

3

加入父子的第一个查询,没有 custom_data_organization 但使用隐含的层次结构:

SELECT parent.id, child.id
    FROM custom_def_organizations AS parent
    JOIN custom_def_organizations AS child
        ON (child.parent_id = parent.id);

这将返回:

18  19
18  20
18  21
18  22
18  23

现在获取其他信息:

SELECT parent.id, child.id, CONCAT(parent.title, ' - ', child.title) AS title
    FROM custom_def_organizations AS parent
    JOIN custom_def_organizations AS child
        ON (child.parent_id = parent.id);

这将返回:

18  19  Server Support - Yes
18  20  Server Support - Site Visits Chargeable
18  21  Server Support - Site Visits Included
18  22  ...
18  23

相同的概念,但使用 custom_data_organizations 驱动 JOIN:

SELECT cdo.id, CONCAT(parent.title, ' - ', child.title) AS title
    FROM custom_data_organizations AS cdo
    JOIN custom_def_organizations AS parent
        ON (cdo.root_field_id = parent.id)
    JOIN custom_def_organizations AS child
        ON (cdo.field_id = child.id);

这将返回:

    85    Server Support - Site Visits Chargeable
    ...
于 2012-10-04T19:15:32.520 回答