Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: UweFFM am Juli 01, 2011, 11:01:19

Titel: Abfrage auf höheren Wert eine anderen Tabelle
Beitrag von: UweFFM am Juli 01, 2011, 11:01:19
Hallo,

ich habe folgendes Problem:

Ich habe 2 Tabellen mit Werten.

Tabelle 1 enthält bsp. die Werte:
5,51
6,03
6,23
6,85
7,09
7,28
7,91
8,13

Tabelle 2 enthält die folgenden Werte:
6,03
6,27
6,99
7,09
7,35
8,01
8,25

Nun soll das Ergebnis der Abfrage sein das mir hinter den Werten der Tabelle 1  (in einem extra Feld) der gleiche oder nächst höhere Wert aus Tabelle 2 angezeigt wird.

Also so:
5,51 | 6,03
6,03 | 6,03
6,23 | 6,27
6,85 | 6,99
7,09 | 7,09
7,28 | 7,35
7,91 | 8,01
8,13 | 8,25

Vielen Dank im voraus für eure Hilfe
Titel: Re: Abfrage auf höheren Wert eine anderen Tabelle
Beitrag von: oma am Juli 01, 2011, 13:32:42
Hallo Uwe,

weiß zwar nicht, wozu das gut sein soll aber:
wenn beide Tabellen gleiche Anzahl von DS haben, wäre folgendes möglich:

1. übernehme die kleine Funktion:

Public Function minimum(wert1) As Double
Dim rs As Recordset, db As DAO.Database
Dim Differenz As Double

Set db = CurrentDb
Set rs = db.OpenRecordset("Select Wert2 from Tabelle2 ORDER BY Wert2")

rs.MoveFirst
minimum = Abs(wert1 - rs!wert2)

Do While rs.EOF = False
    Differenz = Abs(wert1 - rs!wert2)
        If Differenz <= wert1 - minimum Then
            minimum = rs!wert2
        End If
    rs.MoveNext
Loop
End Function



2. Gestalte eine Abfrage mit der Funktion:

SELECT Wert1, minimum([wert1]) AS W
FROM Tabelle1
ORDER BY Wert1



Gruß Oma
Titel: Re: Abfrage auf höheren Wert eine anderen Tabelle
Beitrag von: UweFFM am Juli 11, 2011, 15:04:30
Sorry das ich jetzt erst antworte......   :-[

Zunächst einmal vielen Dank das Du dich meinem Problem angenommen hast. Leider ist deine Vermutung nicht korrekt das beide Tabellen die gleiche Anzahl von DS haben.

In der einen sind ca. 15 Datensätze vorhanden, in der anderen können es mehrere Tausend sein.

Den vielen tausend, teils unterschiedlichen Werten, sollen die 15 der anderen Tabelle zugeordnet werden und zwar immer der identische bzw. nächst höhere Wert.
Titel: Re: Abfrage auf höheren Wert eine anderen Tabelle
Beitrag von: DF6GL am Juli 11, 2011, 21:19:48
Hallo,

sowas Ähnliches hatten wir vor Kurzem schon mal..

Auch dort blieb die Frage unbeantwortet, für was das gut sein soll...

Wie auch immer, vielleicht hilft das:

Select Tabelle1.Wert1 as Spalte1, (Select Top 1  Wert1 From Tabelle2 as tmp Where tmp.Wert1 >=Tabelle1.Wert1 Order by tmp.Wert1) As Spalte2 From Tabelle1  Order by Tabelle1.Wert1
Titel: Re: Abfrage auf höheren Wert eine anderen Tabelle
Beitrag von: UweFFM am Juli 14, 2011, 15:09:30
Das sieht auf den ersten Blcik sehr gut aus.

Vielen Dank

P.S. die Frag nach dem Sinn: Ich muss einzeln errechnete Preis in einige wenige Preisgruppen zusammen fassen.