![]() |
Datenbank: firebird • Version: 2.1 • Zugriff über: IBDAC
rekursives select
Hallo zusammen,
ich habe ein Problem bei folgender select Anweisung:
Code:
die prinzipiell die gewünschten Datensätze liefert z.B.:
with recursive x (id, ref, Anz, Artikel) as
( select s.modell, s.referenz, s.anz, m.partnumber from stueckliste s join modelle m on m.id = s.referenz where s.modell = :id union all select s.modell, s.referenz, s.anz, m.partnumber from stueckliste s join modelle m on m.id = s.referenz inner join x on s.modell = x.ref ) select * from x
Code:
Jedoch sollte die gekennzeichnete Zeile nicht enthalten sein,
ID REF ANZ ARTIKEL
646 680 4 ohne 646 682 2 500738 646 681 4 ohne 646 683 1 500740 646 684 1 500741 646 685 1 500742 646 687 1 500744 <-diese Zeile unterdrücken 687 686 3 500743 x 687 645 1 500690 x 687 688 1 500747 x 687 689 1 500748 x 687 736 2 500793 x 646 690 1 500746 646 696 4 500756 646 727 2 500761 646 728 2 500762 da sie durch die folgenden mit x gekennzeichneten Zeilen vertreten ist (Stücklisten/Teilelisten-Thema) Als Kriterium könnte man sagen: Zeile nicht ausgeben wenn Wert der Spalte REF in Spalte ID vorhanden ist. Aber ich krieg das einfach nicht in das SQL-Statement. |
AW: rekursives select
SQL-Code:
with recursive x (id, ref, Anz, Artikel) as
( select s.modell, s.referenz, s.anz, m.partnumber from stueckliste s join modelle m on m.id = s.referenz where s.modell = :id union all select s.modell, s.referenz, s.anz, m.partnumber from stueckliste s join modelle m on m.id = s.referenz inner join x on s.modell = x.ref ) SELECT * FROM x x1 WHERE NOT EXISTS (SELECT * FROM x WHERE id = x1.ref) |
AW: rekursives select
vielen Dank, klappt wunderbar!
Verstehe allerdings nicht warum. Was ist das für ein x1 ? |
AW: rekursives select
Das x1 hat er, als ordentlicher Programmierer, pro forma hingeschrieben.
Technisch ist es nicht nötig. Man macht das einfach so. :-) |
AW: rekursives select
Zitat:
|
AW: rekursives select
Oh verflixt ... mein Fehler.
Und die Moral von der Geschicht: Man kann schneller tippen als denken. :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz