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

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, 3932 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
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 5 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 12 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 15 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server24 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...