【问题标题】:MySQL join two results together?MySQL将两个结果连接在一起?
【发布时间】:2013-12-04 00:41:51
【问题描述】:

我正在尝试将两个查询结果合并到一个视图/表中。我试过这段代码很接近,但结果合并在一起,如下所示。我需要它们是单独的列。我尝试过加入和联合,但似乎没有任何效果。

输出:

SQL 查询:

`SELECT `PARTY DESCRIPTION` 
FROM `PARTY` 
WHERE
  `PARTY CODE` IN (
    SELECT `PARTY CODE` 
    FROM `PARTY CANDIDATE` 
    WHERE `CANDIDATE ID` IN (
        SELECT `CANDIDATE ID` 
        FROM OFFICE 
        WHERE `OFFICE DESCRIPTION` = 'MAYOR' 
      ) 
    ) 
  UNION
  (
    SELECT `CANDIDATE NAME` 
    FROM `CANDIDATE` 
    WHERE `CANDIDATE ID` IN (
        SELECT `CANDIDATE ID` 
        FROM OFFICE 
        WHERE `OFFICE DESCRIPTION` = 'MAYOR' 
      ) 
    );`

行数:5

PARTY DESCRIPTION
Republican
Democrat
Giuliani
Dinkins
Ferucci

我想要什么:

PARTY DESCRIPTION    NAMES
Republican          Giuliani
Democrat            Ferucci
                    Dinkins

架构:

【问题讨论】:

  • 请显示你想要的输出。
  • 您要从哪些表中获取数据?从这些表中,你想要什么数据?此外,请分享相关列的架构。
  • 吉姆加里森,已更正。 JustinDanielson,我试图从中获取数据的表格是政党表中的政党描述和候选人表中的候选人姓名。数据库的整体图如上,除了参与者表已被删除并替换为候选表和办公室表。
  • 丁金斯怎么了?

标签: mysql sql join union


【解决方案1】:

如果我对问题的理解正确,您将尝试 JOIN 进行两次查询,以便为担任市长职位的候选人显示成对的候选人姓名及其所属政党。

你可以试试这样的:

SELECT `PARTY DESCRIPTION`, `CANDIDATE NAME`
FROM   `PARTY` p
JOIN   `PARTY CANDIDATE` pc ON pc.`PARTY CODE` = p.`PARTY CODE`
JOIN   `CANDIDATE` c ON pc.`CANDIDATE ID` = c.`CANDIDATE ID`
JOIN   `OFFICE` o ON pc.`CANDIDATE ID` = o.`CANDIDATE ID`
WHERE  `OFFICE DESCRIPTION` = 'MAYOR`

【讨论】:

  • 您好,感谢您的回复。尽管据我所知,您的 sql 期望候选人 id 出现在聚会表中,但事实并非如此。它在候选表中。
  • @Kyle 你是对的,我错误地跳过了一个阶段。相应地修正了我的答案。
  • 非常感谢。好的,现在我会尽力理解这一点,因为它只会变得更难哈哈。
  • 如果你想要没有党派关系的丁金斯,你需要左联。我相信您会想要切换前两个联接的顺序(首先是CANDIDATE,然后是PARTY CANDIDATE),并使第二个联接成为left join 以返回所有候选人,无论他们是否有关联方行。
猜你喜欢
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
相关资源
最近更新 更多