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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5056302178
Url: https://administrator.de/forum/sql-tabelle-mehrstufig-durchsuchen-5056302178.html
Ausgedruckt am: 21.12.2024 um 16:12 Uhr
4 Kommentare
Neuester Kommentar
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