Jump to content

Hilfe bei SQL Query


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar
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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

 

Link zu diesem Kommentar

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 von JayR
Link zu diesem Kommentar

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

 

 

 

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...