JayR 0 Geschrieben 23. Januar 2019 Melden Teilen Geschrieben 23. Januar 2019 Hallo zusammen, ich scheitere aktuell an einer Query die mir folgende Tabelle ausliest und Fehler ausgeben soll wenn ein Eintrag nicht vorhanden ist: MenuTable [identifier] [MenuOption] Test 12 Test1 Test2 Das Menu "Test" wird hier mit den Optionen 1 sowie 2 (nicht 12) verkettet, Test1 sowie Test2 haben keine weitere Untermenüs daher sind die Optionen leer Bei fehlenden Einträge sollte die Query dann ein Fehler ausgeben: MenuTable [identifier] [MenuOption] MenuTest 1234 MenuTest1 MenuTest2 MenuTest4 Die Zeile MenuTest3 Fehlt und sollte einen Fehler ausgeben Beispielstabelle ist im Anhang Vorab vieeeeelen vielen Dank Jan Beispiel.xlsx Zitieren Link zu diesem Kommentar
NilsK 2.969 Geschrieben 23. Januar 2019 Melden Teilen Geschrieben 23. Januar 2019 Moin, Bevor wir uns auf etwas stürzen, das man vielleicht besser anders löst, sag uns doch mal, was dahinter steht und was du insgesamt erreichen willst. Gruß, Nils Zitieren Link zu diesem Kommentar
DerFrank 15 Geschrieben 23. Januar 2019 Melden Teilen Geschrieben 23. Januar 2019 vor 7 Stunden schrieb JayR: Hallo zusammen, ich scheitere aktuell an einer Query die mir folgende Tabelle ausliest und Fehler ausgeben soll wenn ein Eintrag nicht vorhanden ist: Das Menu "Test" wird hier mit den Optionen 1 sowie 2 (nicht 12) verkettet, Test1 sowie Test2 haben keine weitere Untermenüs daher sind die Optionen leer Bei fehlenden Einträge sollte die Query dann ein Fehler ausgeben: Hi Jan vielleicht habe ich es verstanden was du meinst...hm... versuchs mal damit.. declare @MenuValue as varchar(50) = 'Test' declare @counter as int =1 Select * from MenuTabelle while (Select count(*) from MenuTabelle where Menu = @MenuValue) >0 Begin --Select @MenuValue [Menu exists] set @MenuValue = 'Test' + CAST(@counter as varchar) set @counter +=1 end select @MenuValue As [Menu Fehlt] VG DerFrank Zitieren Link zu diesem Kommentar
JayR 0 Geschrieben 24. Januar 2019 Autor Melden Teilen Geschrieben 24. Januar 2019 Hallo Frank & Nils, danke für´s antworten, die Antwort von Frank ist aber leider nicht dies was ich vor habe. Ich denke ich habe hier zu wenig Erklärt, die Menu Tabelle enthält sehr viele Menüs (10000). Der MenüName wird mit den Optionen die Menü erlaub sind dann einfach verkettet. In den von mir beigefügten Beipsiel sind 3 Menüs enthalten, Audi, VW, BMW Das Audi Hauptmenü erlaubt die Optionen 1, 2 oder 3 (dargestellt als 123 in der Tabelle) <- Notiz - dies kann auch nicht nachträglich verändert werden Wie oben beschrieben wird dann die (erlaubte) Option immer mit dem jeweiligen Menunamen verkettet. So entsteht Audi1, Audi2 und Audi3 Im Beispiel hat Audi1 dann weitere Optionen nämlich 1 und 2 (dargestellt als 12) Dieses (Sub) Menü wird dann wiederum mit dem Menü Namen - in diesen Fall Audi1 verkettet und es entsteht Audi11 sowie Audi12 Die SQL Query soll die Tabelle und alle Optionen auslesen und prüfen ob die jeweilige Zeile die verkettet wurde auch hinterlegt ist. Im Anhang ist ein Beispiel beidem Audi12 fehlt Danke euch Jan Zitieren Link zu diesem Kommentar
Dukel 457 Geschrieben 24. Januar 2019 Melden Teilen Geschrieben 24. Januar 2019 Ich würde mir die DB Struktur überlegen. Was ist, wenn man statt Audi1 AudiVW haben will? Eine Einfache Tabelle könnte so aussehen, dass man pro Menüeintrag eine Zeile hat und als Felder den menü Eintrag und optional den Parenteintrag: Menü; Parent Audi Audi1; Audi Audi2; Audi Audi3; Audi Audi11; Audi1 Audi12; Audi1 ... Zitieren Link zu diesem Kommentar
NilsK 2.969 Geschrieben 24. Januar 2019 Melden Teilen Geschrieben 24. Januar 2019 Moin, jaja, es hat schon seinen Grund, dass ich nach Anforderungen und Hintergründen frage. Leider ist die zusätzliche Erläuterung zwar für sich genommen erhellend, aber das Wesentliche fehlt trotzdem: Was ist das Ziel? Was soll erreicht werden? Konkret: Warum soll die Abfrage überhaupt gestellt werden, was geschieht mit dem Ergebnis? Weitergehend wären Fragen nach der Datenbankstruktur zu stellen, nach dem Zugriffsmuster usw. Gruß, Nils Zitieren Link zu diesem Kommentar
JayR 0 Geschrieben 24. Januar 2019 Autor Melden Teilen Geschrieben 24. Januar 2019 (bearbeitet) Ist soweit verständlich nur kann ich diese Struktur leider nicht ändern. zu deiner Frage, klar gibt es in dieser Tabelle mehrere Menunamen so ist es natürlich möglich ein Menü mit dem Namen Audi sowie AudiVW zu haben. Gesamt sind dort ca. 5000 verschiedene Menüs die in ca. >10000 zeilen enden Der identifier in der Tabelle ist natürlich unique und mein primary key (ein zweites Menü mit dem selben namen ist nicht möglich) EDIT: Bezüglich Nils fragen: dies ist eine Datenbank für ein Telefonsystem und hier werden die Menükonfiguriation ausgelesen. Die Datensätze (und damit die Konfiguration) stammen vom Kunden, mit der Query soll sichergestellt werden dass der Kunde keine Fehler beim verketten gemacht hat. Die Datenquelle dahinter ist ein simples Excel sheet Zum Telefonsystem: das System liest den Menü namen aus, dahinter sind noch weitere Spalten wie, welches wave file gespielt werden soll etc. Das Menü wird abgespielt und das Telefonsystem prüft ob die Eingabe valide ist in der Spalte Optionen Danach wird immer der genutzte Menüname mit der jeweiligen Option verkettet Die Beispieldatei ist natürlich sehr einfach gehalten, normalerweise gibt es immer ca. 2-3 stufige Menüs teilweise mit 9 Unteroptionen Grüße Jan bearbeitet 24. Januar 2019 von JayR Zitieren Link zu diesem Kommentar
DerFrank 15 Geschrieben 24. Januar 2019 Melden Teilen Geschrieben 24. Januar 2019 Hallo Jan jaja, meine Antwort basiert auf den ersten Informationen von dir. Aufgrund deiner späteren Erklärung sieht das Bild nun ganz anders aus. Also, deine Quelle ist ein ExcelSheet und diese werden in einer Datenbank irgendwie importiert. Und wenn der Kunde im Excelsheet irgend etwas falsch verkettet hat, dann funktioniert das Telefonsystem nicht richtig. Hoffe richtig verstanden zu haben.? Frage: Sind die Daten denn schon in der Datenbank vorhanden oder möchtest du die erst in dem ExcelSheet überprüfen? VG DerFrank Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.