SQL Tabelle mehrstufig durchsuchen
Moin,
ich habe eine Tabelle mit einer Zentrale die Filialen hat, die wiederum Unter Filialen hat, das könnte sich auch nach unten verlängern. Es handelt sich um eine Maria SQL DB, recht aktuelle Version.
Tabelle:
Inhalt:
Ziel:
Finde zur Zentrale (lfdnr 211) die passenden Unterfilialen (212,214,234) und deren Unterfilialen (213,216+215,226,227+250,270,272,353) und so weiter.
Bisher habe ich das mit einem oder mehreren Subselects gemacht, was unübersichtlich und langsam und beim Hinzufügen einer Filialebene erweitert werden musste.
Gibt es irgendeine bequemere Möglichkeit die Tabelle "mehrfach" zu durchsuchen ohne den umständlichen Weg über subselects?
Grüße
ich habe eine Tabelle mit einer Zentrale die Filialen hat, die wiederum Unter Filialen hat, das könnte sich auch nach unten verlängern. Es handelt sich um eine Maria SQL DB, recht aktuelle Version.
Tabelle:
CREATE TABLE `filialen` (
`lfdnr` INT(10) NOT NULL,
`parentid` INT(5) NULL DEFAULT NULL,
`name` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_bin',
PRIMARY KEY (`lfdnr`) USING BTREE
)
COLLATE='utf8_bin'
ENGINE=MyISAM;
Inhalt:
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (211, 1, 'Zentrale');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (212, 211, 'Filiale-F2');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (213, 212, 'Filiale-F22');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (214, 211, 'Filiale-F3');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (215, 214, 'Filiale-F31');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (216, 212, 'Filiale-F21');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (218, 213, 'Filiale-F221');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (219, 213, 'Filiale-F222');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (220, 213, 'Filiale-F223');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (221, 213, 'Filiale-F224');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (222, 216, 'Filiale-F211');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (223, 216, 'Filiale-F21');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (224, 216, 'Filiale-F213');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (226, 214, 'Filiale-F32');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (227, 214, 'Filiale-F34');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (234, 211, 'Filiale-F1');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (250, 234, 'Filiale-F13');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (270, 234, 'Filiale-F11');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (272, 234, 'Filiale-F12');
INSERT INTO `filialen` (`lfdnr`, `parentid`, `name`) VALUES (353, 234, 'Filiale-F16');
Ziel:
Finde zur Zentrale (lfdnr 211) die passenden Unterfilialen (212,214,234) und deren Unterfilialen (213,216+215,226,227+250,270,272,353) und so weiter.
Bisher habe ich das mit einem oder mehreren Subselects gemacht, was unübersichtlich und langsam und beim Hinzufügen einer Filialebene erweitert werden musste.
Gibt es irgendeine bequemere Möglichkeit die Tabelle "mehrfach" zu durchsuchen ohne den umständlichen Weg über subselects?
Grüße
Please also mark the comments that contributed to the solution of the article
Content-Key: 5056302178
Url: https://administrator.de/contentid/5056302178
Printed on: October 2, 2023 at 02:10 o'clock
4 Comments
Latest comment
Moin,
Mithilfe einer CTE kannst du Tabellen rekursiv durchsuchen:
https://mariadb.com/kb/en/recursive-common-table-expressions-overview/
Bekomme das gerade nicht aus dem Kopf hin, mache das zu selten „aus dem Stehgreif“ aber auf diese Weise hab ich solche Themen schon häufig gelöst
Mithilfe einer CTE kannst du Tabellen rekursiv durchsuchen:
https://mariadb.com/kb/en/recursive-common-table-expressions-overview/
Bekomme das gerade nicht aus dem Kopf hin, mache das zu selten „aus dem Stehgreif“ aber auf diese Weise hab ich solche Themen schon häufig gelöst