Vergleich von Daten in einer Tabelle

Chuck_Harnes

Grünschnabel
Hallo tutorials.de Community,

ich habe ein Problem (wie sollte es auch anders sein) mit einer MySQL Abfrage.
Mein Datensatz hat 3 Spalten: Datum, Uhrzeit und Value.

Das Ziel sollte eine Tabelle sein welche Werte von 2 Tagen, mit der selber Uhrzeit darstellt.

Uhrzeit - - - - - Value(tag1) - - - - - Value(tag2)
| 08.00 | - - - - - | 2000 | - - - - - - - - | 2100 |
| 09.00 | - - - - - | 1000 | - - - - - - - - | 900 |
| 10.00 | - - - - - | 200 | - - - - - - - - | 2900 |
| 11.00 | - - - - - | 1500 | - - - - - - - - | 400 |

Wie ich die Werte von einem Tag ausgebe ist mir klar.
Code:
SELECT Uhrzeit, Value
FROM Tabelle
WHERE Datum = '26.11.09' AND Uhrzeit BETWEEN '08.00' and '11.00'

Was ich nicht weiß ist, wie der zweite Wert daneben angezeigt werden kann.

Grüße Chuck
 
Moin,

dass heißt Du grundlegend solche Enträge in der Tabelle :confused:
Code:
 Datum - - - - -  Uhrzeit - - - - Value
|25.11.09| - - - | 08.00 | - - - | 2000 |
|25.11.09| - - - | 08.00 | - - - | 2100 |

Gruß Klaus
 
2 Unterabfragen zusammenführen.

Code:
SELECT
    t1.Uhrzeit,
    t1.Value AS Value1,
    t2Value AS Value2
FROM
    (SELECT
        Uhrzeit, 
        Value
    FROM 
        Tabelle
    WHERE 
        Datum = '25.11.09' 
        AND Uhrzeit BETWEEN '08.00' AND '11.00'
    ) AS t1,
    (SELECT
        Uhrzeit, 
        Value AS Value1
    FROM 
        Tabelle
    WHERE 
        Datum = '26.11.09' 
        AND Uhrzeit BETWEEN '08.00' AND '11.00'
    ) AS t2
WHERE
    t1. Uhrzeit = t2.Uhrzeit

item: Wenn du wenig Daten hast, kannst du die Datum- und die Uhrzeit-Bedinung auch aus den Unterabfragen in die Haubtabfrage überführen.
item: Je ein Index auf Datum und einer auf Uhrzeit kann nicht schaden
item: Ganz wichtig! Du solltest das Datum und die Uhrzeit als Date/Time speichern, nicht als String!
 
Vielen Dank erstmal für die schnelle Hilfe.

Habe jetzt eine Tabelle (Messwerte) importiert und will immer noch das selbe damit anstellen. Die Werte die zu vergleichen sind kommen aus der Spalte CH20.Ich habe probiert den Code von yaslaw darauf anzuweden:

Code:
 SELECT Uhrzeit, CH20 AS value1, CH20 AS value2
FROM (

SELECT Uhrzeit, CH20
FROM Messwerte
WHERE Datum = '25.11.02'
AND Uhrzeit
BETWEEN '06.00'
AND '18.00'
) AS t1, (

SELECT Uhrzeit, CH20 AS Value1
FROM Messwerte
WHERE Datum = '25.06.02'
AND Uhrzeit
BETWEEN '06.00'
AND '18.00'
) AS t2
WHERE t1.Uhrzeit = t2.Uhrzeit

MySQL meldet: Dokumentation
#1052 - Column 'Uhrzeit' in field list is ambiguous

Es wäre nett wenn mir noch jemand sagen könnte wo der Fehler liegt :confused: :) .

Grüße Chuck
 
item: Du hast mein SQL schlecht angewendet. Beide Subqueries haben einen Alias. Das hat seinen Grund. Dein Haubtquery weiss nicht aus welcher der beiden Quellen die Uhrzeit stammt.
ergo: Nicht nur "SELECT Uhrzeit, ...." in der sersten Zeile schreiben, sondern den Alias einer der Subqueries mitgeben, "SELECT t.Uhrzeit, ...."

item: CH20 hast du im 2ten Subselect auf Value1 umbenannt. Im HaubtSelect graifst du aber 2 mal auf CH20. Das ist 2 mal der Wert aus dem ersten Subselect.
ergo: Entweder in beiden Subqueries auf den Feldalias verzichten und um Haubtquery über den Tabellennamen zugreifen oder die Aliase sauber bereinigen und dann auch anwenden.

item: Formatier dein Query sauber, es lässt sich einfach besser lesen.

Code:
SELECT 
    t1.Uhrzeit, 
    t1.CH20 AS value1, 
    t2.CH20 AS value2
FROM 
    (SELECT 
        Uhrzeit, 
        CH20
    FROM 
        Messwerte
    WHERE 
        Datum = '25.11.02'
        AND Uhrzeit BETWEEN '06.00' AND '18.00'
    ) AS t1, 
    (SELECT 
        Uhrzeit, 
        CH20
    FROM 
        Messwerte
    WHERE 
        Datum = '25.06.02'
        AND Uhrzeit BETWEEN '06.00' AND '18.00'
    ) AS t2
WHERE 
    t1.Uhrzeit = t2.Uhrzeit
 

Neue Beiträge

Zurück