Abfrage mit Höchstem Datum

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage mit Höchstem Datum

    Hallo zusammen, brauche mal wieder eure Hilfe.

    Ich habe zwei Tabellen

    CurrencyList:
    +--------------+-----------------+
    | CurrencyID|CurrencyName|
    +--------------+-----------------+
    | 1 |EUR |
    ----------------+-----------------+
    | 2 |USD |
    ----------------+-----------------+

    CurrencyRates
    +---------------------+----------------+-----------------+-----------------+
    | CurrencyRatesID| CurrencyID |CurrencyDate| CurrencyRate |
    +---------------------+----------------+-----------------+------------------+
    | 1 | 1 |31.12.2006 | 1.256 |
    +---------------------+----------------+-----------------+------------------+
    | 2 | 2 |31.12.2006 | 1.207 |
    +---------------------+----------------+-----------------+------------------+
    | 3 | 1 |01.01.2007 | 1.259 |
    +---------------------+----------------+-----------------+------------------+
    | 4 | 2 |01.01.2007 | 1.206 |
    +---------------------+----------------+-----------------+------------------+
    | 5 | 1 |02.01.2007 | 1.266 |
    +---------------------+----------------+-----------------+------------------+

    Nun ich möchte nun eine Abfrage erstellen, die mir von den Währungen in der Tabelle CurrencyList den Aktuellsten Eintrag in der Tabelle CurrencyRates zurückgibt.

    Ausgabe sollte folgend sein:
    CurrencyName | CurrencyDate | CurrencyRate
    EUR |02.01.2007 | 1.266
    USD | 01.01.2007 | 1.206

    Hoffe mir kann jemand helfen.

    Danke Gruss
    Heiniger

  • #2
    Mit Join und max()... Wobei ich mir bei max() mit datumsangaben nicht ganz sicher bin, sollte aber gehen. Kannst du ja nachlesen!
    Für Rechtschreibfehler übernehme ich keine Haftung!

    Kommentar


    • #3
      Habe ich eben Probiert, aber irgendwie git es mir immer das älteste Datum zurück :S

      PHP-Code:
      SELECT 
      CurrencyList
      .CurrencyName
      MAX(CurrencyRates.CurrencyDate) AS LastCRDate
      (
      SELECT TOP (1CurrencyRate 
      FROM CurrencyRates 
      AS CRD 
      WHERE 
      (CurrencyDate MAX(CurrencyRates.CurrencyDate)) 
      ORDER BY CurrencyDate DESC) AS LastCRRate 
      FROM 
      CurrencyList INNER JOIN 
      CurrencyRates ON CurrencyList
      .CurrencyID CurrencyRates.CurrencyRatesID 
      GROUP BY 
      CurrencyList
      .CurrencyName 

      Kommentar


      • #4
        Dann müsste min() das neueste ausgeben?
        Für Rechtschreibfehler übernehme ich keine Haftung!

        Kommentar


        • #5
          schön währs , es gibt mir genau das gleiche Resultat zurück.

          Irgenwie ist es komisch, blicke almälich nicht mehr durch :S

          Kommentar


          • #6
            Ich blick da auch nicht.
            Aber einfach mit MAX das neuste DAtum auslesen und dann nen JOIN mit einer Where-Klausel mit dem Wert, den man als 1. ausgelesen hat.
            Für Rechtschreibfehler übernehme ich keine Haftung!

            Kommentar


            • #7
              Was für ein Datentyp ist denn deine Datumsspalte? In deinem Format macht eine derartige Abfrage keinen Sinn...

              Kommentar


              • #8
                Ist ein "datetime".

                Kommentar


                • #9
                  So habe das Problem gelöst. Leider mit zwei Abfragen, aber naja mir im moment vollkommen egal.

                  Habe nun aus der Ersten Tabelle die Währungen ausgelesen und dan in einer Schlaufe ausgegeben, in dieser Schlaufe suche ich mit Top 1 nach dem Aktuellsten Eintrag der Währung und nehme so die Wert raus.

                  Danke für eure Bemühungen.
                  Heiniger

                  Kommentar

                  Lädt...
                  X