| 

.NET C# Java Javascript Exception

1
Guten Tag,

ich habe folgendes Problem:
Ich habe eine Tabelle mit Frequenzen und Korrekturwerten. Wenn jmd eine beliebige Frequenz eingibt, soll er den nächstmöglichen Korrekturwert erhalten.

Aufbau der Tabelle:
id | frequenz      | korrektur
---------------------
.. | ... | ...
12 | 215,2834392 | 1,133543068
13 | 216,3434392 | 1,133231238
14 | 217,4834392 | 1,132941238
.. | ... | ...


Wenn jmd 215,5 eingibt muss der Korrekturwert der id 12 ausgegeben werden, bei 215,9 der Korrekturwert von id 13, bei 216 ebenfalls vno id 13 . Also immer von der nächstmöglichen Frequenz.

Wie kann ich am besten die nächstmögliche Frequenz erhalten. Es sollte nicht gerundet werden, damit das Ergebnis immer so exakt wie möglich ist.

Ich habe noch keine elegante Lösung für mich gefunden, hatte bereits jmd ein ähnliches Problem?

Grüße Alex
News:
22.11.2017
1 Antwort
1
Das Problem kann durch einen Vergleich von Werten gelöst werden.
Meine Lösung habe ich zwar mit SQL Server erstellt, sollte aber auch unter mySQL funktionieren:

SELECT id FROM <Tabelle>
WHERE ABS(<Wert>-frequenz) = (SELECT MIN(ABS(<Wert>-t1.frequenz)) FROM <Tabelle> t1)


<Tabelle> ihr Tabellenname, <Wert> ist der einzuordnende Wert.

Die WHERE-Klausel berechnet den Absolutbetrag und vergleicht diesen mit dem minimalen Absolutbetrag. So wird immer die ID mit der geringsten Differenz gefunden.

Sollte es vorkommen, dass einmal zwei gleiche Absolutbeträge auftreten können, dann müssten zusätzliche Massnahmen getroffen werden.
23.11.2017
edvservice 1,4k 1 6

Stelle deine Php-Frage jetzt!