Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Manuel_Kraus am November 23, 2017, 15:29:10

Titel: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am November 23, 2017, 15:29:10
Hallo allerseits,
ich heisse Manuel und bin neu hier im Forum und auch noch relativ neu, was Access betrifft.
Aber ich brauche für folgenden Sachverhalt Hilfe :

Ich arbeite in einem Großhandel für Medizintechnik. Wir würden gerne Einkaufspreise von versch. Lieferanten miteinander vergleichen.
Ich bin auf der Suche nach einer vernünftigen Access ( 2016 ) Abfrage, die mir von gleichen Artikeln, den es bei untershiedlichen Lieferanten gibt, den niedrigsten EK ausspuckt.
Was ich bis jetzt gemacht habe in Access :

Tabelle 1
Artikelstamm-DB  ( Tabelle mit unseren im Warenwirtschaftssystem angelegten Artikeln ) Das Feld PZN (Pharmazentralnummer )  soll die Konstante werden und ist auch Primärschlüssel

Tabelle 2
tbl_Lieferanten ( alle bei uns hinterlegten Lieferanten mit Lieferantennummer ) Lieferantennummer ist Primärschlüssel

Tabelle 3
tbl_Vergleich ( Artikel mit PZN, sowie Lieferantennummern und EK-Preis )
Hier stehen z.B 3x die gleiche PZN, bei 3 Lieferanten, zu 3 versch. Preisen

Beziehungen:
Artikelstamm_DB zu tbl_Vergleich über PZN
tbl_Lieferant zu tbl_Vergleich über Lieferantennummer

In der Abfrage habe ich nun die Felder EK, PZN und Lieferantennummer.
Ich schaffe es nur nicht, dass mir jeweils der günstigste EK ausgegeben wird.

Ich hoffe, ich konnte es halbwegs verständlich ausdrücken und hoffe auch diverse Tipps und Tricks.

Vielen Dank
Gruß
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Beaker s.a. am November 23, 2017, 16:04:03
Hallo Manuel,
Schön, dass dein Datenmodell schon mal korrekt ist. Damit ist es ganz
leicht den niedrigsten EK mit einer gruppierten Abfrage zu ermitteln.
Erstelle eine Abfrage mit der Tabelle tbl_Vergleich, in der Entwurfsansicht
klickst du oben rechts auf das Summenzeichen. Dann schaust du dir im unteren
Bereich die Zeile "Funktion" an.
1.Tipp: gruppiert wird nach dem Feld "PZN"
gruss ekkehard
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am November 23, 2017, 16:41:32
Hallo Beaker,

vielen Dank für die schnelle Hilfe :
Habe jetzt eine qry mit tbl_Vergleich und den 3 Feldern PZN, EK, Lieferantennummer.
Summe und PZN gruppiert, die anderen beiden erster Wert.
( Habe noch Testdaten in der tbl_Vergleich )

Habe einen Artikel 3 Lieferanten, mit 3 verschiedenen EK's und in der query steht der teuerste Preis der drei. :)

Gruß
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Beaker s.a. am November 23, 2017, 18:17:16
Hallo Manuel,
Hast du die verschiedenen Möglichkeiten in der Zeile "Funktion" angeschaut?
Die sind doch eigentlich selbst erklärend bei deiner Fragestellung.
Na gut; - PZN wird gruppiert, EK auf "Minimum" und der Lieferant als "ErsterWert".
gruss ekkehard
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am November 24, 2017, 08:26:51
Guten morgen,
ja natürlich, EK auf min funktioniert. Die PZN zieht er auch die richtige und es sieht so aus, als stünde in der Abfrage auch
nur ein Datensatz mit der eindeutigen PZN.
Jetzt hab ich noch das Problem, dass er nicht die richtige Lieferantennummer mitnimmt.
Hab ich da noch was übersehen, oder wird das jetzt etwas schwieriger mit einer reinen Abfrage?

Danke
Gruß
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Lachtaube am November 24, 2017, 10:05:28
Ermittle in der Abfrage zu jeder PZN zunächst nur den niedrigsten Preis. In Schritt 2 erstellst Du eine neue Abfrage, nimmst Ursprungstabelle und die Abfrage aus Schritt 1 in die Abfrage auf, verknüpfst Tabelle und Abfrage über PZN und das Preisfeld und zeigst die gewünschten Felder aus der Tabelle an.

PS: wenn das zu Erfolg führt, kann man den SQL-Text aus Abfrage 1 in Abfrage 2 integrieren und Abfrage 1 anschließend löschen (das Wie zeigen wir Dir dann).
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am November 24, 2017, 12:42:53
Hallo Lachtaube,
es hat genau so funktioniert.
Habe jetzt in der 2. Abfrage die pzn, den niedrigsten EK und den passenden Lieferanten. Somit stimmt meine Basis.
( Wird später mit echten Daten als .csv exportiert und über ein makro in mein WWS importiert. Im wws soll dann beim entsprechenden Artikel der EK und der Lieferant auf den günstigsten geändert werden )

Allgemeine Access Verständnisfrage :
Was wäre jetzt anders, wenn ich nur diese eine Tabelle gemacht hätte? ( tbl_Vergleich)

Vielen Dank
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Lachtaube am November 24, 2017, 12:59:47
Zur Verständnisfrage: Es läge ein Haufen redundanter Daten vor. Denn alle Lieferantendaten müssten ja in jedem Datensatz eines Artikels erscheinen. Gleiches träfe auch für die Artikel zu. Das Datenvolumen wäre entsprechend größer. Ausserdem bestünde die Gefahr, dass Inkonsistenzen (sei er auch nur durch einen Tippfehler verursacht) bei den Daten auftreten.
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am November 28, 2017, 08:15:23
Guten morgen,

vielen Dank für die Hilfe.
Es hat an sich nur den Eindruck gemacht, als wären diese Tabellen nicht beteiligt :)
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Lachtaube am November 28, 2017, 09:22:30
Nun, diese beiden Tabellen verknüpft man, wenn das Resultat der Abfrage steht und Klartextausgaben und weitere Einzelheiten bei der Ausgabe (z. Bsp. in einem Bericht, einem CSV- oder Excel-Export) erwünscht sind. Bei einem Equi-Join (https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/chap7.htm#innerjoin) (Inner Join), das sind die Verknüpfungen, die Access auch im Abfrageeditor mit einer Linie darstellen kann, werden dann nur die Datensätze angezeigt, die auf beiden Seiten sind (so funktioniert das ja auch mit der Abfrage über PKN und Preis).

Zusätzlich könnte man diese Verknüpfung auch in einen Left- (https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/chap7.htm#leftjoin) oder Right-Outer Join (https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/chap7.htm#rightjoin) umwandeln, was dann auch die Datensätze der linken oder rechten Seite der Verknüpfung anzeigt, die auf der anderen Seite kein Pendant haben. Diese Verknüpfungsarten wären aber für Deine Anforderung unbrauchbar. Der Vollständigkeit wegen sei noch erwähnt, dass es auch Theta-Joins (https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/chap7.htm#thetajoin) gibt, die Access nur noch in der SQL-Ansicht bewältigen kann, bzw. beim Umschalten in die Entwurfsansicht der Abfrage ihren Inhalt verfälscht und unbrauchbar macht.
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am November 30, 2017, 09:14:12
Guten morgen ,
vielen Dank für die ausführliche Antwort. Lerne jeden Tag neues dazu :)
Ich hab jetzt zu meiner Problemstellung noch einen Nachtrag ( eigenen Wunsch )
Meine Abfrage erzielt nun die gewünschten Ergebnisse mit meinen Testdaten. ( ca. 20 Datensätze )

Wenn ich jetzt allerdings Daten meiner Lieferanten in die Tabelle packe, sind da schnell 5000 Zeilen enthalten.
Kann ich nun aus der Abfrage die Artikel (PZN's ) entfernen, die nur einmal vorkommen und dann logischerweise in der Abfrage als günstigster landen?

Danke danke
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Lachtaube am November 30, 2017, 09:23:54
Lasse Dir vom Abfrage-Assistenten zur Suche nach Doubletten Deine Basis-Abfrage erstellen.
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am November 30, 2017, 11:47:39
Jetzt bin ich etwas verwirrt, zumal mir nochwas eingefallen ist. Oh mann ...
Bei Artikeln, die ich nur einmal in der tbl_Vergleich habe ( kommt ´dann oft vor, Sortiment der Lieferanten u.s.w ) findet ja kein Preisvergleich statt, sondern er übernimmt in der Abfrage den einen Preis den er hat. ( Das meinte ich, ob ich das ausklammern kann ). Ich will als Ergebnis nur Daten, die dann auch im WWS geändert werden.

Und genau das bringt mich zu einem Problem :
Wo hinterlege ich jetzt sinnvoll die Preise, die schon im WWS drin sind?
Wenn jetzt der günstigste aus der tbl_Vergleich z.b teurer ist, als der Preis, den ich schon im System habe, ergibt das keinen Sinn.

Kann man mein geschriebenes nachvollziehen? :)

Danke
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Lachtaube am November 30, 2017, 12:03:18
Das könnte ja dann wohl nur über einen weiteren Vergleich ermittelt werden: Abfrage-Preis vs WWS-Preis.
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am November 30, 2017, 13:18:42
wie wäre das zu implementieren, wenn ich bei der
tbl_Artikelstamm den bestehenden EK als Spalte anfüge?

Danke
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Lachtaube am November 30, 2017, 13:43:03
Sinngemäß sollteSELECT q.* FROM Abfrage q
       LEFT JOIN WWSTabelle w
              ON q.PKN = w.PKN
WHERE  q.Preis < w.Preis OR
       w.Preis Is Null;
die Daten aus der Abfrage übrig lassen, für die ein niedrigerer Preis als in der WWS-Tabelle ermittelt wurde, bzw. für die es in der WWS-Tabelle noch keinen Eintrag gibt.
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am Dezember 01, 2017, 14:48:41
okay, also eine neue Abfrage mit der ek qry und der wws Tabelle?
Geht das mit der sql-Anweisung etwas ausführlicher? :) sorry
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Lachtaube am Dezember 01, 2017, 15:13:13
Manuel, Du musst schon konkret fragen, was Du an der SQL-Abfrage nicht verstehst oder in einem SQL-Tutorium (AFAIK erklärt die Wikipedia Grundzüge von SQL auch recht gut) im WWW nachforschen (der Sprachumfang ist ja nicht so gewaltig).
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am Dezember 04, 2017, 08:21:25
Guten morgen,
die SQL Anweisung kann ich lesen. Es ging mir bei der Frage nur um die Anordung ( Reihenfolge ) in meiner Datenbank.
Ich benötige dafür nun eine weitere Abfrage mit der tbl_Artikelstamm ( WWS ) und der letzten qry, die mir die günstigsten Preise incl. Lieferant ausspuckt, oder die tbl_Verlgleich, die alle EK's enthält, die ich von den Lieferanten habe?

Danke
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Lachtaube am Dezember 04, 2017, 10:52:48
Das Abfrageergebnis ist mit dem Artikelstamm abzugleichen, wobei auch noch ggf. Fälle von Preisänderungen untersucht werden müssten. Was nützt es, wenn in Artikelstamm zwar der günstigere Preis steht, beim eingetragenen Lieferanten aber mittlerweile ein anderer Preise gültig ist.
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am Januar 08, 2018, 13:54:01
Hallo miteinander,

wünsche noch ein frohes und gesundes neues Jahr 2018!
Meine Access Abfrage funktioniert tadellos, dank eurer hilfe.
Jetzt habe ich noch etwas, was mir besser gefallen würde. :) wegen der Übersichtlichkeit

Wenn jetzt in der Vergleichstabelle Artikel eingespielt werden, die ich nicht im Artikelstamm habe ( WAWI ), zeigt sie mir die Access Abfrage natürlich an ''als günstigster''.. wie kann ich das noch ausblenden?
vielen vielen Dank
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Lachtaube am Januar 13, 2018, 09:55:49
Ein INNER JOIN bewirkt, dass die Daten auf beiden Seiten der Verknüpfung vorhanden sein müssen. Also einfach nur die Zieltabelle zusätzlich in der Abfrage über das Schlüsselfeld verknüpfen (Linie aufziehen), sollte zur gewünschten Reduktion der Daten führen.
Titel: Re: Preisvergleich mit Einkaufspreisen
Beitrag von: Manuel_Kraus am Januar 16, 2018, 14:37:46
Hallo Lachtaube,

sieht gut aus, nachdem ich die Abfragen nach und nach gestaltet habe, kam der innerjoin die pzn betreffend vorher mit dazu
und zum Schluß der leftjoin für den EK.
Super, vielen Dank!