MS SQL Server 2008 Views in Datenbanken sinnvoll Selektieren bzw. Verbinden
Hallo zusammen,
Ich habe Views mit Preislisten.
1.KuPreisAllg(Allgemeiner Artikel Preis)
-ArtikelNr
-KundenNr
-Bezeichnung1
-Bezeichnung2
-Einzelpreis
2.KuPreisSpez (Spezieller Kunden Artikel preis)
-ArtikelNr
-KundenNr
-Bezeichnung1
-Bezeichnung2
-Einzelpreis
3. ArtKaPreis (Artikelnummern und Preise der Kategorie zuordnen)
-Artikelnummer
-KategorieID
-Einzelpreis
-Bezeichnung1
-Bezeichnung2
4.KuPreiKat (Kunden der Kategorie zuordnen)
-Kundennr
-PreisKatID
Wie kann ich nun per SQL SELECT eine Artikelliste mit seinen Preisen generieren? Bedingungen:
1. Vermtl. Schleife die jeden Artikel durchgeht
2. Hat der Kunde spezielle Preise auf den Artikel Wenn Nein Schritt 3 sonst ENDE
3. Hat der Kunde Kategorische Preise auf den Artikel Wenn Nein Schritt 4 sonst ENDE
4. Allgemeinen Preis dem Kunden für den Artikel zuweisen.
Alleine bei der Abfrage der Preise komme ich nicht weiter.
Hier mein Ansatz (Aber leider 2 Werte drin):
Ich habe Views mit Preislisten.
1.KuPreisAllg(Allgemeiner Artikel Preis)
-ArtikelNr
-KundenNr
-Bezeichnung1
-Bezeichnung2
-Einzelpreis
2.KuPreisSpez (Spezieller Kunden Artikel preis)
-ArtikelNr
-KundenNr
-Bezeichnung1
-Bezeichnung2
-Einzelpreis
3. ArtKaPreis (Artikelnummern und Preise der Kategorie zuordnen)
-Artikelnummer
-KategorieID
-Einzelpreis
-Bezeichnung1
-Bezeichnung2
4.KuPreiKat (Kunden der Kategorie zuordnen)
-Kundennr
-PreisKatID
Wie kann ich nun per SQL SELECT eine Artikelliste mit seinen Preisen generieren? Bedingungen:
1. Vermtl. Schleife die jeden Artikel durchgeht
2. Hat der Kunde spezielle Preise auf den Artikel Wenn Nein Schritt 3 sonst ENDE
3. Hat der Kunde Kategorische Preise auf den Artikel Wenn Nein Schritt 4 sonst ENDE
4. Allgemeinen Preis dem Kunden für den Artikel zuweisen.
Alleine bei der Abfrage der Preise komme ich nicht weiter.
Hier mein Ansatz (Aber leider 2 Werte drin):
SELECT DISTINCT
ArtikelNr
,KundenNr
,Bezeichnung1
,Bezeichnung2
,Einzelpreis
FROM KuPreisAllg
WHERE KundenNr = '...'
UNION ALL
SELECT DISTINCT
ArtikelNr
,KundenNr
,Bezeichnung1
,Bezeichnung2
,Einzelpreis
FROM [KuPreisSpez
WHERE KundenNr = '...'
ORDER BY ArtikelNr;
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 186785
Url: https://administrator.de/forum/ms-sql-server-2008-views-in-datenbanken-sinnvoll-selektieren-bzw-verbinden-186785.html
Ausgedruckt am: 18.04.2025 um 04:04 Uhr
6 Kommentare
Neuester Kommentar
Moin Moin,
hast du schon mal etwas von Normalisierung gehört?
Deine Tabellen (mit den dort gespeicherten Informationen) machen keinen Sinn, da dort globale Informationen mehrfach vorkommen. Es ist nicht ersichtlich, was eine Tabelle und was ein View ist
Könntest du dein ERM mal hier veröffentlichen?
Grüße aus Rostock
Wolfgang
(Netwolf)
hast du schon mal etwas von Normalisierung gehört?
Deine Tabellen (mit den dort gespeicherten Informationen) machen keinen Sinn, da dort globale Informationen mehrfach vorkommen. Es ist nicht ersichtlich, was eine Tabelle und was ein View ist
Könntest du dein ERM mal hier veröffentlichen?
Grüße aus Rostock
Wolfgang
(Netwolf)
Hallo,
hier mal mein Schuss aus der Hüfte
Dabei bin ich davon ausgegangen, dass die Bezeichnungen gleich sind und es für jede Kombination Artikel/Kunde mindestens den allgemeinen Preis gibt.
KuPreisAllg sollte aus meiner Sicht aber Kundenunabhängig sein, da man ja sonst direkt Spezialpreise machen könnte.
Gruß Jörg
hier mal mein Schuss aus der Hüfte
select a.ArtikelNr, a.KundenNr, a.Bezeichnung1, a.Bezeichnung2,
NVL(NVL(d.Einzelpreis,c.Einzelpreis),a.Einzelpreis) Preis
from KuPreisAllG a
left join KuPreiKat b on b.KundenNr = a.KundenNr
left join ArtKaPreis c on c.Artikelnummer = a.ArtikelNr and c.KategorieID = b.PreisKatID
left join KuPreisSpez d on d.KundenNr = a.KundenNr and d.ArtikelNr = a.ArtikelNr
where a.KundenNr = '&Kunde'
Dabei bin ich davon ausgegangen, dass die Bezeichnungen gleich sind und es für jede Kombination Artikel/Kunde mindestens den allgemeinen Preis gibt.
KuPreisAllg sollte aus meiner Sicht aber Kundenunabhängig sein, da man ja sonst direkt Spezialpreise machen könnte.
Gruß Jörg
Hallo,
Wobei wir das hier mit deinen uns gelieferten Informationen nicht unterscheiden können.
Und dein
Gruß,
Peter
Wobei wir das hier mit deinen uns gelieferten Informationen nicht unterscheiden können.
Und dein
MS SQL 4 Datenbanken
stimmt so ja auch nicht. Du hast wohl eine (1) Dantenbank. Der datenbankhersteller ist MS und du hastden SQL Server XXXX (ja, da gibt es deutliche unterschiede). In deiner datenbank hats du hier jetzt vier (4) Tabellen (Obwohl das hier auch Views sein können. Innerhalb einer Datenbank sind die verschiedenen Elemente (Tabellen, Views, Abfragen usw.) dort drinnen zusammengefassst. Du siehst auf Dateiebene nur die 2 Dateien (meistens nur 2 aber nicht zwingend) welche deine Datenbank mit all ihren Internen elementen ausmacht. Somit ist deine Aussage du hast 4 SQL Datenbanken hier einfach nicht richtig.Gruß,
Peter
Hallo,
komme halt aus der Oracle-Welt
Schön, dass man helfen konnte.
Ich versuche erst garnicht groß das Datenbankdesign zu hinterfragen, da man eventuell gar keine Chance hat darauf Einfluß zu nehmen. Man kann auf sowas wie Normalisierung hinweisen und sich aber dennoch um einen ersten Lösungsansatz bemühen. Was mich besonders irrietiert ist das "rumreiten" auf Tabelle oder View. Für den Select ist es doch völlig unerheblich. Oder ist das beim MS SQL-Server anders?!?
Also noch einen schönen Tag und hoffentlich noch die Lösung für Dein CSV-Problem. Vielleicht wäre es ratsam hierfür ein neues Thema zu erstellen, da diese Frage hier keiner vermutet.
Und später nicht vergessen die Frage auf "gelöst" zu setzen.
Gruß Jörg
komme halt aus der Oracle-Welt
Schön, dass man helfen konnte.
Ich versuche erst garnicht groß das Datenbankdesign zu hinterfragen, da man eventuell gar keine Chance hat darauf Einfluß zu nehmen. Man kann auf sowas wie Normalisierung hinweisen und sich aber dennoch um einen ersten Lösungsansatz bemühen. Was mich besonders irrietiert ist das "rumreiten" auf Tabelle oder View. Für den Select ist es doch völlig unerheblich. Oder ist das beim MS SQL-Server anders?!?
Also noch einen schönen Tag und hoffentlich noch die Lösung für Dein CSV-Problem. Vielleicht wäre es ratsam hierfür ein neues Thema zu erstellen, da diese Frage hier keiner vermutet.
Und später nicht vergessen die Frage auf "gelöst" zu setzen.
Gruß Jörg