Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Abweichung innerhalb einer Spalte ermitteln

Begonnen von Labor, März 22, 2023, 13:56:05

⏪ vorheriges - nächstes ⏩

Labor

Hallo, ich muss in einer Abfrage Werte innerhalb einer Spalte auswerten und in einer neuen Tabelle/Abfrage anzeigen.
Beispiel: 5 Temperaturfühler mit je einem Messwert
Abfrage
NR  Messwert
1   100,02
2   100,05
3   100,00
4   100,07
5   100,15 

es können bis zu 50 Fühler sein. Nun müssen alle Fühler mit einer Anweichung +- 0,02 gepaart werden.
Das Ergebnis wäre
Paar 1 NR 1+3
Paar 2 NR 2+4

Kann mir jemand helfen?
  •  

ebs17

SELECT
   T1.ID,
   T1.Messwert,
   T2.Messwert
FROM
   TableX AS T1,
   TableX AS T2
WHERE
   T1.ID < T2.ID
      AND
   Abs(T1.Messwert - T2.Messwert) <= 0.02
Mit freundlichem Glück Auf!

Eberhard
  •  

Labor

Hallo Eberhard,

ich komme leider mit dem Code nicht klar.
Ich habe nur eine Spalte NR und eine Spalte Messwerte in meiner Abfrage. Basis ist meine Tabelle Messwerte.
Ich habe kein T1 oder T2.

Gruß
Frank
  •  

MzKlMu

Hallo,
T1 und T2 sind Aliasnamen Deiner einen Tabelle.
Ersetze Tabellen- und Feldnamen durch die bei Dir vorhanden Namen.
Gruß
Klaus
  •  

Labor

Hallo Klaus, so sieht mein Ergebnis aus. Nich brauchbar.

PA        T1.Nr   T1.Prüf_A   T2.Nr   T2.Prüf_A
225240/10   2   138,05   4   138,05
225240/10   1   137,96   5   137,95
225240/10   1   137,96   6   137,95
225240/10   5   137,95   6   137,95
225240/10   1   137,96   8   137,97
225240/10   11   137,87   14   137,86
225240/10   2   138,05   16   138,05
225240/10   4   138,05   16   138,05
225240/10   9   138,31   17   138,31
225240/10   1   137,96   18   137,98
225240/10   8   137,97   18   137,98
Jeder Fühler(Nr) darf nur einmal erscheinen, im besten Fall sind es 9 Fühler-Paare

Gruß
Frank
  •  

Labor

Nachtrag.

So muss es aussehen:
PA        T1.Nr T1.Prüf_A   T2.Nr   T2.Prüf_A

225240/10   17  138,31      9   138,31
225240/10   3   138,26      12  138,13
225240/10   13  138,11      2   138,05
225240/10   16  138,05      5   138,05
225240/10   18  137,98      8   137,97
225240/10   1   137,96      6   137,95
225240/10   10  137,92      11  137,87
225240/10   14  137,89      4   137,85
225240/10   20  137,80      19  137,76
225240/10   21  137,44      15  137,40

Gruß
Frank



  •  

ebs17

ZitatSo muss es aussehen:
Bei sechs von 10 Paaren ist die Differenz größer 0,02.
Das ist eine überzeugende Umsetzung der eigenen Vorgabe.
Mit freundlichem Glück Auf!

Eberhard
  •  

Labor

Mein Fehler, habe die Werte per Hand zusammengestellt, aber in der Form sollte das Ergebnis sein.
Gruß
Frank
  •  

markusxy

Zitat von: Labor am März 22, 2023, 16:57:25eder Fühler(Nr) darf nur einmal erscheinen


Vielleicht erklärst du auch die Hintergründe etwas.
Was ist wenn sich mit einem Wert verschiedene Paare bilden lassen - nach welcher Logik soll dann vorgegangen werden?

Du solltest die Angelegenheit erstmal durchdenken bevor es mit dem Programmieren losgeht und nicht erst am Schuss mit weiteren Bedingungen daherkommen.  ;)
  •  

ebs17

#9
Die "nicht brauchbare" Abfrage liefert die Paare mit der geforderten Maximalabweichung, alle Paare, die damit denkbar sind - was nebenbei Prinzip von SQL (Massendatenverarbeitung) ist.

Aus diesen kannst Du nun entsprechend Deinen unbekannten Kriterien die gewünschten auswählen. Bei Fühler 1 bis 18 hast Du sichtbar nur noch aus 11 Paaren statt aus rechnerisch möglichen 153 auszuwählen. Mancher würde das als Fortschritt bezeichnen.
Bei 50 hätte man 1225 rechnerische Paare.

Da die konkreten Kriterien noch nicht vernehmbar formuliert sind, recht wahrscheinlich noch nicht einmal im eigenen Kopf klar sind, sollte die Hoffnung nicht sehr groß sein, dass Du eine Lösung vorgelegt bekommst, wie Du sie Dir vorstellst. Der Vergleich mit unbekannt gibt unbekannt.

Beantworte im Gegenzug die Frage nach Brauchbarkeit Deiner Aufgabenformulierung.
Mit freundlichem Glück Auf!

Eberhard
  •  

Labor

Ganz einfach, die beiden hösten Werte von zwei Fühlern bei den die Abweichnung <0,02 ist, bilden ein Paar.
Danach die beiden nächste Fühler usw.
Deswegen wäre es gut, wenn das erste Paar aus der Liste in einen neue Tabelle verschoben wird.

Gruß
Frank
  •  

markusxy

Zitat von: Labor am März 23, 2023, 18:08:18Ganz einfach

Na dann könntest du ja auch eine ganz Einfache Lösung umsetzen.
Ein zusätzliches Feld für die Paarungen erstellen.
Recordset sortiert öffnen und per VBA die Paarungen bilden.
Die Logik ist da trivial du vergleichst einfach die Elemente nach ihrer Reihenfolge und wenn die Abstände passen machst du ein Paar draus.
Wenn da mehr als 20000 Paarungen sein, kann man danach auch über eine effizientere Lösung nachdenken.
Erstmal solltest du aber mal überhaupt etwas umsetzen.

Solltest du es nicht schaffen, dann zeig zumindest deinen Versuch.
  •  

Labor

Hallo, hatte leider keinen Zeit mich damit zu beschäftigen.
Ich habe eine funktionierende Abfrage in einem Formular.

Paarung1-Unterformular
PA       T1.Prüf_A   T2.Nr   T2.Prüf_A  T1.Nr diff
225240/10   138,31   17   138,31       9    0,00
225240/10   138,05   16   138,05       5    0,00
225240/10   138,05   16   138,05       2    0,00
225240/10   138,05   5   138,05       2    0,00
225240/10   137,97   18   137,98       8   -0,01
225240/10   137,96   8   137,97       1   -0,01
225240/10   137,96   6   137,95       1    0,01
225240/10   137,96   18   137,98       1   -0,02
225240/10   137,87   14   137,86      11    0,01
225240/10   137,85   14   137,86       4   -0,01
225240/10   137,85   11   137,87       4   -0,02

Nun möchte ich die erste Zeile in die Tabelle TabPaarung kopieren und diese kopierte Zeile aus der Abfrage bzw. dazu gehörigen Tabelle löschen. Damit verschwinde auch die noch möglichen doppelten Kombinationen.
Wenn ich das ganze manuel mache geht es natürliche. Ziel ist es aber, per Button im Formular es automatisch durchlaufen zu lassen. Ich finde hier leider keinen Ansatz. Könnt  Ihr mir helfen.
  •  

ebs17

#13
Grundlagen - SQL ist leicht (23) - Bedingte Zweierkombinationen mit einmaligen Elementen bilden

ZitatIch habe eine funktionierende Abfrage
Womöglich wäre es ratsam, diesen Deinen zauberhaften Einfall auch öffentlich zu zeigen.
Mit freundlichem Glück Auf!

Eberhard
  •  

Labor

Hallo Eberhard, super das Du meine Aufgabenstellung in "Grundlagen-SQL ist leicht" übernommen hast.
Ich habe nun nur das Problem mit dem VBA Code. Wenn ich die 2. Abfrage öffne bekomme ich die Fehlermeldung
"..das Datenbankmodul findet die Eingabetabelle oder Abfrage "tmptSelection" nicht....". Wird der VBA Code automatisch aufgerufen oder muss ich den noch irgendwie aktinvieren?

Gruß
Frank 
  •