SQL Abfrage über mehrere Tabellen, DESC Limit 1

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Zusammen,

    ich würde gerne über mehrere Spalten eine Abfrage starten und mir von jeder Tabelle den letzten Wert ausgeben lassen.

    Es handelt sich dabei um Benzinpreise, die ich in einer Datenbank stehen habe.

    Aufgebaut ist die Datenbank wie folgt:

    Datenbank: Benzinpreise

    Tabellen:

    - Avanti

    - OMV

    - ..... uvm.

    Wie ich es bis jetzt getestet habe:

    Code
    select avanti.id, avanti.super, omv.id, omv.super from avanti, omv ORDER BY avanti.id, omv.id DESC LIMIT 1 ;

    Ergebnis ist dann folgendes:

    Code
    id|super|  id|super
    1| 1.359|   6|1.409

    Problem dabei ist, dass ich zwar eine Ausgabe erhalte, aber nicht über jede Tabelle das DESC greift.

    ich habe bei einem Ergebnis, die ID 1 was der erste Eintrag ist, und bei dem zweiten Ergebnis, was der momentan letzte Eintrag ist,

    Ich würde aber gerne von beiden Ergebnissen, den letzten Eintrag in der Tabelle erhalten.

    Gibt es hier einen Trick?

    Danke

  • Was für einen Datenbank ist das?

    MySQL (oder ein Fork), PostgreSQL, SQlite, ....?

    Eine Idee wäre eine virtuelle Tabelle, in der jeweils die letzten Werte der entsprechenden anderen Tabellen steht.

    Doch das WIE ist abhängig von der jeweiligen DB-Engine.

    Computer ..... grrrrrr

  • Hallo,

    also ich würde sagen, dass dein Datenbankentwurf falsch ist. Für jede Tankstellenkette ein eigene Tabelle ist schlecht / falsch.

    Besser wäre, basierend auf den Angaben, drei Tabelle:

    Tabelle "tankenstelle": Spalte ID, Spalte name

    Tabelle "kraftstoffstorten": Spalte ID, spalte name

    Tabelle "preise": Spalte ID (optional), Spalte preise, Spalte tankestelle (als Fremschlüssel "tankstelle"), Spalte "kraftstoffsorte" (als Fremdschlüssel "kraftstoffsorte)

    Du hast also zwei 1:N Beziehungen.

    Zur Frage: IMHO musst du auch hinter `avanti.id``DESC`schreiben.

    Gruß, noisefloor

  • Bei

    Zitat

    Tabelle "tankenstelle": Spalte ID, Spalte name

    Tabelle "kraftstoffstorten": Spalte ID, spalte name

    Tabelle "preise": Spalte ID (optional), Spalte preise, Spalte tankestelle (als Fremschlüssel "tankstelle"), Spalte "kraftstoffsorte" (als Fremdschlüssel "kraftstoffsorte)

    wird es aber schwierig, für jede Tankstelle sowie jede Sorte den (passend zur Uhrzeit [das wäre auch noch ein Wert,d er aufgenommen werden müsste]) geltenden Preis zu erfassen.

    Eigentlich müsste pro Tankstelle das folgende erfasst werden:

    Uhrzeit, Sorte, Preis

    nun könnte man eine Tabelle mit zusammengehörenden Spalten erstellen, in die als 'gemeingültige Spalte' die Uhrzeit gelten würde

    Zeit | A-Sorte | A-Preis | B-Sorte | B-Preis | ...

    Hier könnte über eine zweite Tabelle:

    Index | Firma | Sorte

    und einen dritte Tabelle

    Index | Firma | Standdort

    Das zusammengeknotet werden.

    Oder

    Tabelle Sorte Z:

    Zeit| A-preis | B-Preis | C-Preis

    Tabelle Sorte Y:

    Zeit| A-preis | B-Preis | C-Preis

    Hier sind A, B und C die Firmen

    Computer ..... grrrrrr

  • noisefloor

    Gerne bin ich bereit meine Struktur umzubauen, da ich aber davon wenig Ahnung habe, bzw. noch nicht wirklich viel damit gemacht habe, muss ich mir das erstmal genau anschauen.

    Rasp-Berlin

    Meine Struktur sieht momentan ähnlich aus.

    Ich habe pro Tankstelle eine eigene Tabelle. Innerhalb der Tabelle ist folgender Aufbau.

    Code
    id|        zeit      |super|diesel
    1|2017-12-20 14:54:20|1.349|1.159
    2|2017-12-20 15:04:50|1.349|1.159
    3|2017-12-20 15:05:20|1.349|1.159
    4|2017-12-21 10:34:26|1.299|1.119
    5|2017-12-21 11:15:19|1.299|1.119
    6|2017-12-21 11:20:46|1.299|1.119
  • Hallo,

    @Raps-Berlin:

    Zitat

    wird es aber schwierig, für jede Tankstelle sowie jede Sorte den (passend zur Uhrzeit [das wäre auch noch ein Wert,d er aufgenommen werden müsste]) geltenden Preis zu erfassen.

    Weil...? Genau darauf ist das Tabellendesign doch ausgelegt. Bzw. den Zeitstempel noch dazu, das macht ja Sinn.

    Gruß, noisefloor

  • ich würde gerne über mehrere Spalten eine Abfrage starten und mir von jeder Tabelle den letzten Wert ausgeben lassen.

    Man kann sog. "JOIN"s verwenden, also eine Art Verknüpfung über mehrere Tabellen hinweg. Siehe dazu zum Beispiel Wie würdet ihr das lösen / angehen?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!