Hallo ich habe folgende Tabellen:
Preislisten
LID;Bezeichnung;BasisLID
Index = LID
Artikelpreise
LID;Artikelnummer;abMenge;Preis;AID
Index = AID Index2 = LID;Artikelnummer;abMenge
Die Preislisten sind miteinander verkettet über das Feld BasisLID das immer auf die darüber liegende Preisliste zeigt. Der Einsprungspunkt ist quasi die unterste gültige Preisliste für den Kunden.
Preisliste1 (Standard; enthält alle Artikel mit Standardpreisen)
Preisliste2 (besondere Kunden; enthält niedrigere Preise)
Preisliste3 (ganz besondere Kunden; ....)
Preisliste4 .....
Wenn ich einen Preis suchen soll dann habe ich zur Verfügung die Preislisten -Id LID (der Startpunkt der Suche) die Artikelnummer und eine Artikelmenge.
Also gehe ich in die Preisliste merke mir die Basis-PreislistenID (BasisLID) für den Fall das der Artikel nicht in der Artikelpreisliste enthalten ist.
Dann gehe ich in die Artikelpreisliste mit der LID und suche den Artikel und die Menge. Da fängt schon die erste Schwierigkeit an:
LID;Artikelnummer;abMenge;Preis
1;10;0;13.50
1;10;400;13.30
1;10;600;13.20
Nehmen wir an ich suche die Menge 450 also möchte ich den Preis 13.30 zurückbekommen. Und wenn es den Artikel nicht gibt unter der LID dann soll er über die gemerkte BasisLID in die Preislisten gehen und dort sich eine ev. vorhandene neue BasisLID merken und wieder von vorne anfangen.
Bisher hab ich das mit mehreren SQL Statements und Programm-Code erledigt der einfach die Artikelpreisliste abfragt findet er keinen Artikel hohlt er sich die nächste Liste.
Findet er einen dann frägt er die Datenmenge ab und sucht im Programm den letzten Datensatz das ist dann hier z.B. 13.30.
Nun ist das ganze doch recht langsam vorallem wenn da gleich mal 6 und mehr Preislisten verkettet werden. Schließlich muß das ganze ja ständig zum Client geschickt werden der dann prüft und das nächste SQL-Statement generiert.
Habt Ihr vielleicht eine Idee wie ich das ganze nur mit SQL machen kann. Laufen soll das ganze auf einem MS SQL-Server 7.0
LG
Peter
Preislisten
LID;Bezeichnung;BasisLID
Index = LID
Artikelpreise
LID;Artikelnummer;abMenge;Preis;AID
Index = AID Index2 = LID;Artikelnummer;abMenge
Die Preislisten sind miteinander verkettet über das Feld BasisLID das immer auf die darüber liegende Preisliste zeigt. Der Einsprungspunkt ist quasi die unterste gültige Preisliste für den Kunden.
Preisliste1 (Standard; enthält alle Artikel mit Standardpreisen)
Preisliste2 (besondere Kunden; enthält niedrigere Preise)
Preisliste3 (ganz besondere Kunden; ....)
Preisliste4 .....
Wenn ich einen Preis suchen soll dann habe ich zur Verfügung die Preislisten -Id LID (der Startpunkt der Suche) die Artikelnummer und eine Artikelmenge.
Also gehe ich in die Preisliste merke mir die Basis-PreislistenID (BasisLID) für den Fall das der Artikel nicht in der Artikelpreisliste enthalten ist.
Dann gehe ich in die Artikelpreisliste mit der LID und suche den Artikel und die Menge. Da fängt schon die erste Schwierigkeit an:
LID;Artikelnummer;abMenge;Preis
1;10;0;13.50
1;10;400;13.30
1;10;600;13.20
Nehmen wir an ich suche die Menge 450 also möchte ich den Preis 13.30 zurückbekommen. Und wenn es den Artikel nicht gibt unter der LID dann soll er über die gemerkte BasisLID in die Preislisten gehen und dort sich eine ev. vorhandene neue BasisLID merken und wieder von vorne anfangen.
Bisher hab ich das mit mehreren SQL Statements und Programm-Code erledigt der einfach die Artikelpreisliste abfragt findet er keinen Artikel hohlt er sich die nächste Liste.
Findet er einen dann frägt er die Datenmenge ab und sucht im Programm den letzten Datensatz das ist dann hier z.B. 13.30.
Nun ist das ganze doch recht langsam vorallem wenn da gleich mal 6 und mehr Preislisten verkettet werden. Schließlich muß das ganze ja ständig zum Client geschickt werden der dann prüft und das nächste SQL-Statement generiert.
Habt Ihr vielleicht eine Idee wie ich das ganze nur mit SQL machen kann. Laufen soll das ganze auf einem MS SQL-Server 7.0
LG
Peter
Comment