Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Datenbanken

GELÖST

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

Mitglied: pwarrior

pwarrior (Level 1) - Jetzt verbinden

20.06.2012, aktualisiert 21.06.2012, 3919 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 ..
Ähnliche Inhalte
Datenbanken
MS SQL Server 2008 Auftragspriorität
gelöst Frage von SweetOneDatenbanken4 Kommentare

Hallo liebe Leute, ich hätte da heute mal eine Frage zum Thema Microsft SQL Server 2008. Die Forums-Suche hat ...

Windows Server
MS Sql Datenbank auf neues Netz Server umziehen
Frage von netshapeWindows Server3 Kommentare

Hallo, unsere MS Sql Datenbank für ERP System Dynamic Nav 2013 soll vom bestehenden Server auf einen neuen umgezogen ...

Datenbanken
MS SQL Cache Datenbank löschen
gelöst Frage von GahmuretDatenbanken5 Kommentare

Hallo zusammen, wie lösche ich den Cache einer MS SQL Datenbank? Bevorzugt über ein SQL Statement. VG Gahmuret

Windows Server
Hohe Leselast auf MS-SQL-Datenbank
gelöst Frage von YotYotWindows Server12 Kommentare

Guten Morgan alle! Wir setzen für unser inzwischen nicht mehr ganz taufrisches MS CRM 2011 den MS SQL Server ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 8 StundenLinux1 Kommentar

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit24 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
gelöst Frage von Windows10GegnerNetzwerkgrundlagen23 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...