【发布时间】:2021-12-31 15:01:20
【问题描述】:
欢迎回答我的问题
我从 mysql 开始,我正在尝试找出 select 语句及其用途。
我有包含这些输入的“业务”表:
它是这样制作的:
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
) ENGINE = InnoDB CHARACTER SET greek COLLATE greek_general_ci;
我想选择每个企业的 id 和名称以及它的分支机构数量(如果没有分支机构我希望它显示 0)。
ps:我已经弄清楚如何显示所有业务及其“父”业务。我不知道它是否会有所帮助,但我是这样做的:
select c.businessname as child, p.businessname as parent
from business c left join business p on p.id = c.branch
order by c.businessname;
数据是:
INSERT INTO business VALUES
('Vasilopoulos Nikolaos', 'Vasilopoulos','1995-05-20 00:00',26400,'Volos',20004,120,NULL,5),
('Tzatzadaki Maria', 'Tzatzadakis','1992-10-02 00:00',20001,'Patra',24222,58,NULL,2),
('Tzatzadaki Maria', 'Tzatzadakis','1998-08-04 00:00',31200,'Patra',24228,180,20001,3),
('Tzatzadaki Maria', 'Tzatzadakis Ypokatastima 2','1998-08-04 00:00',31201,'Patra',24228,180,31200,3),
('Papadopoulos Ioannis', 'Papadopoulou Mpiskota','2000-01-15 00:00',18777,'Athina',27366,280,NULL,1),
('Kallimani Athanasia', 'Thalassina Kallimanis','2000-03-17 00:00',54874,'Korinthos',22008,71,NULL,4),
('Xristopoulos Ioannis','Chris','2010-05-05 00:00',80000,'Athina',24111,56,NULL,1),
('Kallimani Athanasia', 'Thalassina Kallimanis Kalamatas','2000-03-25 00:00',54875,'Kalamata',25005,23,54874,4),
('Kallimani Athanasia', 'Thalassina Kallimanis Spartis','2000-04-17 00:00',54876,'Sparti',28667,34,54874,4),
('Kallimani Athanasia', 'Thalassina Kallimanis Spartis A tomeas','2000-04-17 00:00',54877,'Sparti',28667,34,54876,4),
('Kallimani Athanasia', 'Thalassina Kallimanis Spartis B tomeas','2000-04-18 00:00',54878,'Sparti',28667,34,54876,4),
('Kallimani Athanasia', 'Thalassina Kallimanis Spartis A tomeas Syskevastirio','2000-04-24 00:00',54879,'Sparti',28667,34,54877,4);
提前感谢您的帮助
【问题讨论】:
-
能否请您提供文本或dbfille的数据
-
@nbk 我编辑我的问题
-
似乎有超过 1 级深度。我想知道像 recursive cte 这样的东西是否可以在 mysql 中工作,或者在这里有用。
-
这最好用递归 cte 解决