Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MS SQL Server 2008 Views in Datenbanken sinnvoll Selektieren bzw. Verbinden

Frage Entwicklung Datenbanken

Mitglied: pwarrior

pwarrior (Level 1) - Jetzt verbinden

20.06.2012, aktualisiert 21.06.2012, 3872 Aufrufe, 6 Kommentare

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):

01.
SELECT DISTINCT 
02.
	 ArtikelNr 
03.
	,KundenNr 
04.
	,Bezeichnung1 
05.
	,Bezeichnung2 
06.
	,Einzelpreis 
07.
FROM KuPreisAllg 
08.
WHERE KundenNr = '...'  
09.
UNION ALL 
10.
SELECT DISTINCT 
11.
	 ArtikelNr 
12.
	,KundenNr 
13.
	,Bezeichnung1 
14.
	,Bezeichnung2 
15.
	,Einzelpreis 
16.
FROM [KuPreisSpez 
17.
WHERE KundenNr = '...' 
18.
ORDER BY ArtikelNr;
Mitglied: NetWolf
20.06.2012 um 16:18 Uhr
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)
Bitte warten ..
Mitglied: LianenSchwinger
20.06.2012, aktualisiert um 17:13 Uhr
Hallo,

hier mal mein Schuss aus der Hüfte

01.
select a.ArtikelNr, a.KundenNr, a.Bezeichnung1, a.Bezeichnung2,  
02.
       NVL(NVL(d.Einzelpreis,c.Einzelpreis),a.Einzelpreis) Preis 
03.
from KuPreisAllG a  
04.
left join KuPreiKat b on b.KundenNr = a.KundenNr 
05.
left join ArtKaPreis c on c.Artikelnummer = a.ArtikelNr and c.KategorieID = b.PreisKatID 
06.
left join KuPreisSpez d on d.KundenNr = a.KundenNr and d.ArtikelNr = a.ArtikelNr 
07.
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
Bitte warten ..
Mitglied: Pjordorf
21.06.2012 um 02:05 Uhr
Hallo,

Zitat von pwarrior:
Ich habe Tabellen bzw. Views mit Preislisten.
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
Bitte warten ..
Mitglied: pwarrior
21.06.2012 um 08:52 Uhr
Vielen Dank,

deine Antwort hat es gelöst:
Nur das die NVL in MSSQL Coalesce heißt.

select a.ArtikelNr, a.Bezeichnung1, a.Bezeichnung2,
COALESCE(COALESCE(d.Einzelpreis,c.Einzelpreis),a.Einzelpreis) Preis
from KuPreisAllG a
left join KuPreisKat b on b.KundenNr = a.KundenNr
left join ArtKatPreis c on c.Artikelnummer = a.ArtikelNr and c.ListeID = b.PreisKatID
left join KuPreisSpez d on d.KundenNr = a.KundenNr and d.ArtikelNr = a.ArtikelNr
where a.KundenNr = '$Kunde'
ORDER BY ArtikelNr;

Ich finde es echt super, das hier doch noch einige ihre "Schüsse aus der Hüfte" mitteilen und nicht darauf rumreiten "Das hast du Falsch beschrieb, und hier muss noch was hin. Vielen Danke
LianenSchwinger
Bitte warten ..
Mitglied: pwarrior
21.06.2012 um 08:54 Uhr
Jetzt muss das Ergebnis noch per CSV exportiert werden, ich mache mich erstmal selbst schlau, wer aber auf Anhieb drauf kommt. Kann es mir gerne mitteilen.
Bitte warten ..
Mitglied: LianenSchwinger
21.06.2012 um 09:07 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Server
SQL Server 2008 R2 SP3 neue Instanz (10)

Frage von technikdealer zum Thema Windows Server ...

Microsoft
gelöst DRINGEND: Suche Microsoft SQL SERVER 2008 R2 STANDARD Eval (8)

Frage von Xaero1982 zum Thema Microsoft ...

Datenbanken
MS-SQL-Server + T-SQL+Batch (4)

Frage von kallewirsch zum Thema Datenbanken ...

Datenbanken
gelöst 1GB phpMyAdmin SQL Datei in SQL Server 2008 R2 importieren (7)

Frage von Himpke zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...