Jump to content
JayR

Hilfe bei SQL Query

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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

 

MenuTabelle.png

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

...

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

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

 

 

Edited by JayR

Share this post


Link to post
Share on other sites

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.:eye2:?

 

Frage:

Sind die Daten denn schon in der Datenbank vorhanden oder möchtest du die erst in dem ExcelSheet überprüfen?

 

VG

DerFrank

 

 

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...