【问题标题】:MySql Select records from table with father and sons relationshipsMySql 从具有父子关系的表中选择记录
【发布时间】:2021-12-30 11:51:12
【问题描述】:

您好,欢迎回答我的问题

我有这张桌子:

CREATE TABLE IF NOT EXISTS business(
  businessname varchar(250) NOT NULL,
  title varchar(250) NOT NULL,
  registerdate datetime NOT NULL,
  id int NOT NULL,
  city varchar(50) NOT NULL,
  tk varchar(10) NOT NULL,
  number varchar(20) NOT NULL,
  branch int,
  doy_id int NOT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (branch) REFERENCES business(id)
  ON DELETE CASCADE ON UPDATE CASCADE,
  FOREIGN KEY (doy_id) REFERENCES doy(id_kataxorisis)
  ON DELETE CASCADE ON UPDATE CASCADE
)

如您所见,此表代表一家公司,虽然很差,但确实如此。

分支列代表公司的“子”

我想(用select语句)找到每个公司及其母公司的名称,如果公司没有母公司,那么它应该显示NULL。

我一直在考虑这个问题,但我什至不知道如何开始。你能帮帮我吗?

【问题讨论】:

    标签: mysql sql select


    【解决方案1】:

    您可以自行加入表。您必须为查询包含的每个表实例添加别名。

    例如,你可以这样做:

    select
      c.id, c.businessname,
      p.id, p.businessname
    from business c
    left join business p on p.id = c.branch
    

    注意:查询使用LEFT JOIN 来确保您看到没有父行的公司。在这种情况下,它会在父值的位置显示空值。

    【讨论】:

    • 如果我想选择每家公司的id和名称,以及它的分支机构数量,但是当它没有分支机构时,我希望它显示0?我能做什么?
    • 您可能需要聚合(使用GROUP BYCOUNT())或者它可以通过子查询来解决。我会问一个单独的问题,我会提供几行示例数据,以确保读者清楚您想要什么。
    猜你喜欢
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    相关资源
    最近更新 更多