AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL - Nach nicht direkt gegebenem Datum suchen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL - Nach nicht direkt gegebenem Datum suchen

Ein Thema von e-gon · begonnen am 7. Apr 2016 · letzter Beitrag vom 8. Apr 2016
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: SQL - Nach nicht direkt gegebenem Datum suchen

  Alt 7. Apr 2016, 22:05
Ein klein wenig anders:
SQL-Code:
select a.Artikel, xpreis, xdate
from a join
(select id
       ,preis as xpreis
       ,max (datum) xdate
 from tab2
 where date<=grenzdatum -- hier das Datum einsetzen
 Group by id) x on (x.id=a.id)
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 ( 7. Apr 2016 um 22:06 Uhr) Grund: blödsinn
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: SQL - Nach nicht direkt gegebenem Datum suchen

  Alt 7. Apr 2016, 22:25
Ok, das Gleichheitszeichen meinetwegen. Aber bei dem Rest bleibe ich bei meiner Version.
Ich habe es so verstanden, dass für alle Artikel (in der Tabelle ist ein Artikel mehrfach enthalten) jeweils der ausgegeben werden soll, der am gewählten Tag gültig ist, also n aus m Datensätzen selektiert werden müssen.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
685 Beiträge
 
Delphi 12 Athens
 
#3

AW: SQL - Nach nicht direkt gegebenem Datum suchen

  Alt 8. Apr 2016, 10:15
Wenn Du eine nach Datum aufsteigende eindeutige ID hättest, wäre es Standard
Du willst zunächst wissen, welche Datensätze in Frage kommen:
Code:
  select artikelid, max(datum) as datum
    from #preise
    where datum<='2010-01-01' -- your date here
    group by artikelid
Das Ergebnis wird in einem INNER JOIN mit der Ursprungs-Tabelle verknüpft
Code:
select p.* from #preise p
inner join
(
  select artikelid, max(datum) as datum
    from #preise
    where datum<='2010-01-01' -- your date here
    group by artikelid
) pl
on (p.artikelid=pl.artikelid) and (p.datum=pl.datum)
Hinweis: Dies ist in Advantage Database getestet - da es aber SQL Standard ist, sollte es sogar ACCESS können.
#preise ist eine temp-Tabelle zum Testen, wie folgt erzeugt:
Code:
create table #preise(
id autoinc,
artikelid integer,
datum date,
preis money
);
insert into #preise(artikelid,datum,preis) values(1,'2012-01-01',12);
insert into #preise(artikelid,datum,preis) values(1,'2011-01-01',11);
insert into #preise(artikelid,datum,preis) values(1,'2010-01-01',10);
insert into #preise(artikelid,datum,preis) values(1,'2009-01-01',9);

insert into #preise(artikelid,datum,preis) values(2,'2012-01-01',24);
insert into #preise(artikelid,datum,preis) values(2,'2011-01-01',23);
insert into #preise(artikelid,datum,preis) values(2,'2010-01-01',22);
insert into #preise(artikelid,datum,preis) values(2,'2009-01-01',21);
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz