Datensatz ausfindig machen

Moderator: ModerationP

Datensatz ausfindig machen

Beitragvon vtnp » 14. Jan 2019, 12:09

Guten Tag,

ich habe eine Frage zum finden eines bestimmten Datensatzes in einer Tabelle
Die Tabelle um die es geht ist eine entpivotisierte Tarifkarte
Meine Tabelle ist wie folgt aufgebaut :

Zone Gewicht Preis
1 0,5 7,97 €
2 0,5 8,73 €
3 0,5 9,05 €
4 0,5 9,67 €
5 0,5 10,31 €
1 1 8,20 €
2 1 9,36 €
3 1 10,01 €
4 1 10,85 €
5 1 11,75 €
...

Das Gewicht geht in 0,5 Schritten weiter bis 200 und sind als Zahl deklariert.
Die Zonen sind von 1 bis 5

Meine Frage wäre nun wie ich eine Abfrage erstelle, die mir den jeweiligen Preis Preis für die jeweilige Zone und dessen Gewicht.

Zb. es wird der Preis für die Zone 4 und dem Gewicht 0,9 gesucht. -> Sprich 9,67€

Hätte da jemand eine Idee?

Danke!
vtnp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 75
Registriert: 02. Apr 2016, 16:27

Re: Datensatz ausfindig machen

Beitragvon Yaslaw » 14. Jan 2019, 12:24

Erklärungen: [SQL] Aktuelle Einträge pro Gruppe auslesen

Code: Alles auswählen
select t_all.preis
from
   my_table t_all
   inner join (
      select max(gewicht) as max_gewicht, zone
      from my_table
      group by zone
   ) t_max
    on t_all.zone = t_max.zone and t_all.gewicht = t_max.gewicht
where
   t_all.zone = 4 and t_all.gewicht <= 0.9
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements sind formatierbar)
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
Benutzeravatar
Yaslaw
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2577
Registriert: 02. Jul 2014, 15:25
Wohnort: Winterthur

Re: Datensatz ausfindig machen

Beitragvon vtnp » 14. Jan 2019, 12:32

Hallo Yaslaw,

Vielen Dank für deinen Tipp!
Ich werde versuchen ihn gleich umzusetzen!

Grüße
vtnp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 75
Registriert: 02. Apr 2016, 16:27

Re: Datensatz ausfindig machen

Beitragvon vtnp » 14. Jan 2019, 13:18

Code: Alles auswählen
SELECT TestPreis.Preis
FROM
   TestPreis
   INNER JOIN (
      SELECT MAX(Gewicht) as max_Gewicht, Zone
      FROM TestPreis
      GROUP BY Zone
   ) TestPreis_max
    ON TestPreis.Zone = TestPreis.max.Zone and TestPreis.Gewicht = TestPreis.max.Gewicht
WHERE
   TestPreis.Zone = 4 and Testpreis.Gewicht <= 0.9


Access Spuckt mir immer einen SyntaxFehler in der JOIN Funktion aus.
Liegt es eventuell daran, dass die Zonen als Text deklariert sind?

Danke!
vtnp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 75
Registriert: 02. Apr 2016, 16:27

Re: Datensatz ausfindig machen

Beitragvon Yaslaw » 14. Jan 2019, 13:51

Sorry, mein Fehler
Code: Alles auswählen
ON TestPreis.Zone = TestPreis_max.Zone and TestPreis.Gewicht = TestPreis_max.max_Gewicht
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements sind formatierbar)
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
Benutzeravatar
Yaslaw
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2577
Registriert: 02. Jul 2014, 15:25
Wohnort: Winterthur

Re: Datensatz ausfindig machen

Beitragvon vtnp » 14. Jan 2019, 13:56

Danke! :)

Jetzt habe ich das Problem, dass mir die Abfrage gar keinen Wert ausgibt :(

Woran kann es liegen?

danke!
vtnp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 75
Registriert: 02. Apr 2016, 16:27

Re: Datensatz ausfindig machen

Beitragvon Beaker s.a. » 14. Jan 2019, 14:47

Hallo,
Vielleicht übersehe ich mal wieder etwas, aber ich bekomme den gewünschten
Preis mit
Code: Alles auswählen
SELECT Max(P.Preis) AS DerPreis
FROM tblPreise AS P
WHERE P.Zone = EineZone AND P.Gewicht < EinGewicht
GROUP BY P.Zone

gruss ekkehard
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 440
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen

Re: Datensatz ausfindig machen

Beitragvon vtnp » 14. Jan 2019, 15:06

Hallo,

ich habe auch eine Lösung gefunden:

Code: Alles auswählen
SELECT Max(Zone) AS Y, Max(Preis) AS P, Max(Gewicht) AS X
FROM TestPreis
WHERE (((TestPreis.Gewicht)<=1.9) AND ((TestPreis.Zone)="4"));


Meine Frage: Kann ich in einem Formular die Kriterien der WHERE Klausel zb. durch Kombintionsboxen ausgeben.
Sprich ich kann in den Comboboxen Werte ausgeben und der Preis aktualisiert sich dann?

Vielen Dank für eure Hilfe!
vtnp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 75
Registriert: 02. Apr 2016, 16:27

Re: Datensatz ausfindig machen

Beitragvon Yaslaw » 14. Jan 2019, 15:21

vtnp hat geschrieben:Meine Frage: Kann ich in einem Formular die Kriterien der WHERE Klausel zb. durch Kombintionsboxen ausgeben.
Sprich ich kann in den Comboboxen Werte ausgeben und der Preis aktualisiert sich dann?

Vielen Dank für eure Hilfe!

Verstehe nicht was du meinst.
Eine Combobox ist nicht zum Ausgeben von Werten sondern zum Erfassen von Werten.
Aber grundsätzlc^ich sage ich mal, sollte gehen was immer du auch meinst.
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements sind formatierbar)
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
Benutzeravatar
Yaslaw
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2577
Registriert: 02. Jul 2014, 15:25
Wohnort: Winterthur

Re: Datensatz ausfindig machen

Beitragvon Beaker s.a. » 14. Jan 2019, 15:35

@vtnp
Stimmt, die Gruppierung ist unnötig. Was du aber mit Max(Zone) und Max(Gewicht)
willst verstehe ich nicht.
Frage: Warum ist "Zone" vom Typ Text? Würde ich ändern.
zb. durch Kombintionsboxen ausgeben.

Auch das Gewicht? Da reicht IMO ein Textfeld, musst das ja eh irgendwie ermitteln
und eintragen. Für die Zone ist ein Kombi natürlich bestens geeignet.
Der Bezug in der Abfrage sieht dann so aus.
Code: Alles auswählen
SELECT Max(P.Preis) AS DerPreis
FROM tblPreise AS P
WHERE P.Zone = Forms!DeinFormular!cboZonen AND P.Gewicht < Forms!DeinFormular!txtGewicht

gruss ekkehard
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 440
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen

Re: Datensatz ausfindig machen

Beitragvon vtnp » 15. Jan 2019, 14:43

Hallo Ekkehard,

Zone als Text weil eventuell eine Sonderzone eingeführt wird, die einen Buchstaben enthält.
Vielen Dank für deine Auskunft!!

Grüße
vtnp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 75
Registriert: 02. Apr 2016, 16:27

Re: Datensatz ausfindig machen

Beitragvon Beaker s.a. » 15. Jan 2019, 16:11

Zone als Text weil eventuell eine Sonderzone eingeführt wird, die einen Buchstaben enthält.

Dann solltest du den Zonen auf jeden Fall eine ID (Autowert) spendieren.
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 440
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Beaker s.a. und 11 Gäste