Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Daten vergleichen





Frage

Hallo,(auch an Rudolf) ich habe ein für mich großes Problem. Ich habe eine Tabelle (Beispiel) Obst - Preis Müller - Preis Schulz --------------------------------------- Äpfel - 10 EURO - 20 EURO Birnen - 20 EURO - 10 EURO so und jetzt möchte ich eine Abfrage stellen die mir den niedrigsten Wert von Äpfel und Birnen und den dazugehörigen Anbieter ausdruckt. Geht das ? Hat einer eine Idee wie man das machen kann. Ich hänge total fest habe nicht einmal einen Ansatz wie man das machen könnte. Es wäre super wenn mir einer helfen könnte. Danke schon mal. Gruß Margret

Antwort 1 von Roadrunner90

Hallo Margret,
geht auf jeden Fall. Bin grade schwer beschäftigt. Werde am späten Nachmittag nochmal reinschauen und wenn bis dahin keiner eine Lösung hat mich drum kümmern.
Gruß Rudolf

Antwort 2 von Teddy7

Wieviele Preisspalten vergleichst Du denn da ?
Bei 2 Spalten ist die Lösung eine andere als bei 50.
Bei wenigen Spalten würde es z.B. ausreichen eine Abfrage zu machen mit
Obst / Max von Preis Müller / Max von Preis Schulz
und eine eigene Spalte einfügen mit:
wenn([Max von Preis Müller] > [Max von Preis Schulz];[Max von Preis Müller];[Max von Preis Schulz])

Gruß
Klaus

Antwort 3 von oliverV

Hallo Margret,

falsche Datenbankstruktur !!!

dennoch habe bin ich über mehrere Umwege zum gewünschten Ergebnis gekommen.

Ich bin davon ausgegangen, das deine Werte in einer Tabelle stehen.

1) Erstelle eine SQL-UNION-Abfrage „UNION“

SELECT Tabelle1.Obst, Tabelle1.[Preis Müller] As Preis, "Müller" As Anbieter FROM Tabelle1
UNION SELECT Tabelle1.Obst, Tabelle1.[Preis Schulz], "Schulz" As Anbieter FROM Tabelle1;

2) Erstelle eine Auswahlabfrage „Min“
SELECT UNION.Obst, Min(UNION.Preis) AS [Min von Preis]
FROM [UNION]
GROUP BY UNION.Obst;


3) Erstelle eine Auswahlabfrage “Min mit Preis”

SELECT UNION.Obst, UNION.Preis, UNION.Anbieter, Min.[Min von Preis], IIf([Min von Preis]=[Preis],[Anbieter],"") AS [niedrigster Anbieter]
FROM [Min] INNER JOIN [UNION] ON Min.Obst = UNION.Obst;


4) Erstelle eine Abfrage „Ergebnis“

SELECT [Min mit Preis].Obst, [Min mit Preis].[Min von Preis], [Min mit Preis].[niedrigster Anbieter]
FROM [Min mit Preis]
WHERE ((([Min mit Preis].[niedrigster Anbieter]) Not Like ""));


Das Ganze ist jetzt mit der rechten Hand hinter dem Kopf herum am linken Ohr gekratzt, evtl. gibt es noch eine elegantere Lösung.

Gruß
oliver


Antwort 4 von oliverV

Hallo Klaus,

mit deiner Variante funktioniert es auch, es fehlt allerdings der Anbietername, diesen bekommt man aber durch eine weiter Spalte „Anbietername“:
wenn([Max von Preis Müller]>[Max von Preis Schulz]; „Müller“; „Schulz“)

Dein Beispiel ist mit max. meins mit min. ; ändert jedoch nichts an der Vorgehensweise.

Gruß
oliver


Antwort 5 von Teddy7

Jo - lesen ist halt manchmal Glückssache *g*

Antwort 6 von Roadrunner90

@Margret
bist du mit den tipps klargekommen, falls nein, bin ich ab jetzt wieder erreichbar
Gruß Rudolf

Antwort 7 von Roadrunner90

Hallo Margret,
erstmal muss ich Oliver recht geben, die Struktur der Tabelle ist nicht gut.
Besser z.b. so:
Fld1 = Obstart
Fld2 = Anbieter
Fld3 = Preis

sieht dann gefüllt etwa so aus:
Äpfel - Müller - 10 €
Äpfel - Huber - 15 €
Birnen - Müller - 20 €
Birnen - Huber - 12€

danach funktioniert eine Abfrage die als SQL etwa so aussieht:

SELECT testobst.*
FROM testobst
WHERE (((testobst.preis)=DMin("preis","testobst","obstart='Birnen'")));

die Abrage obstart=... kannst du durch eine Variable aus z.B. einem Formular ersetzen. Das sieht dann etwa so aus:
"obstart = & Formular!Obstauswahl"

Wie schon gesagt 35° Innenraumtemperatur, da geht das alles nicht so flüssig. Wenn weiterhin Unklarheit besteht, dann schick mir deine email-adresse und ich lass dir eine kleine Muster-DB zukommen.
Gruß Rudolf

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: