· 5 years ago · Oct 22, 2020, 11:24 PM
1WITH RECURSIVE x (id, name, birthday, mother, father, depth) AS (
2SELECT id, name, birthday, mother, father, 1 FROM horse WHERE ID=?
3UNION ALL
4SELECT h.id, h.name, h.birthday, h.mother, h.father, x.depth + 1 FROM x
5JOIN horse h ON x.mother=h.id OR x.father=h.id
6)
7SELECT * FROM x
8
9CREATE TABLE IF NOT EXISTS horse
10(
11 id BIGINT AUTO_INCREMENT PRIMARY KEY,
12 name VARCHAR(255) NOT NULL,
13 description VARCHAR(255) NULL,
14 birthday DATE NOT NULL,
15 gender ENUM('male', 'female') NOT NULL,
16 breed BIGINT NULL,
17 mother BIGINT NULL,
18 father BIGINT NULL,
19 FOREIGN KEY (breed) REFERENCES breed(id),
20 FOREIGN KEY (mother) REFERENCES horse(id),
21 FOREIGN KEY (father) REFERENCES horse(id)
22 );