2016-05-03 5 views
-1

Mit einem PHP-Code möchte ich wissen, in welcher Spalte der neueste Eintrag befindet, wenn ich zum Beispiel an ID 2 interessiert ist. Dann Spalte "time4" mit der Zeit " 2016-03-01 10:01:01 "ist der neueste Eintrag.Finden Sie die Spalte mit dem neuesten Eintrag in SQL mit PHP

id  time1     time2     time3     time4 
1  2016-01-01 09:27:24  2016-01-02 10:01:01  2016-01-02 17:05:07  2016-01-01 10:01:01 
2  2016-01-02 09:27:24  2016-01-03 10:01:01  2016-02-02 17:05:07  2016-03-01 10:01:01 
3  2016-01-02 10:27:24  2016-01-03 11:01:01  2016-02-02 18:05:07  2016-03-01 11:01:01 

ich versuchte, diese

<?php 
$User=1; 
$result = $con->query("SELECT MAX(TimeToSelect) as Output 
FROM (
    SELECT time1 as TimeToSelect,id 
    FROM tableTime 
    union 
    SELECT time2,id 
    FROM tableTime 
    union 
    SELECT time3,id 
    FROM tableTime 
     union 
    SELECT time4,id 
    FROM tableTime 
    ) as A 
    WHERE id = '$User'"); 
$row = $result->fetch_array(MYSQLI_BOTH); 

echo $something=$row[0]; 
?> 

Aber dann hallt es das Datum „2016.03.01 10.01.01“ und nicht der Spaltenname „time4“.

+0

Ja, ein SQL-Code sehr hilfreich wäre. – user5095266

+0

Würden Sie bitte Ihre erwartete Leistung zeigen? Mit diesem kann ich eine SQL für Sie schreiben. – Kason

+0

Oki, ich habe die Frage jetzt editiert, wo am Ende die erwartete Ausgabe in einem extra Satz erklärt wird. Vielen Dank! – user5095266

Antwort

0

Wenn Sie nur 4 Spalten zum Vergleichen haben, können Sie die folgende SQL verwenden, um zu bekommen, was Sie wollen.
Sie können die ID in where Bedingung ändern, um die späteste Zeit für bestimmte 'ID' zu erhalten. (Jedes Mal, jeweils id)

SELECT MAX(TimeToSelect) as Output 
FROM (
    SELECT time1 as TimeToSelect,id 
    FROM tableTime 
    union 
    SELECT time2,id 
    FROM tableTime 
    union 
    SELECT time3,id 
    FROM tableTime 
    union 
    SELECT time4,id 
    FROM tableTime 
    ) as A 
    WHERE id = 1 

Wenn Sie die Spalten Namen erhalten möchten, versuchen Sie unter SQL:

SELECT ColumnName 
FROM (
    SELECT time1 AS TimeToSelect,id,'time1' AS ColumnName 
    FROM tableTime 
    UNION 
    SELECT time2,id,'time2' 
    FROM tableTime 
    UNION 
    SELECT time3,id,'time3' 
    FROM tableTime 
    UNION 
    SELECT time4,id,'time4' 
    FROM tableTime 
    ) AS A 
WHERE id = 1 
AND TimeToSelect = (SELECT MAX(TimeToSelect) 
        FROM (
         SELECT time1 AS TimeToSelect,id,'time1' AS ColumnName 
         FROM tableTime 
         UNION 
         SELECT time2,id,'time2' 
         FROM tableTime 
         UNION 
         SELECT time3,id,'time3' 
         FROM tableTime 
         UNION 
         SELECT time4,id,'time4' 
         FROM tableTime 
         ) AS A 
        WHERE id = 1 
        ) 
+0

Danke! Ich habe diesen Code ausprobiert, aber es gibt mir die Zeit und nicht den Spaltennamen? Ich habe das Ergebnis und den PHP-Code hinzugefügt, den ich am Ende der Frage verwendet habe. – user5095266

+0

@ user5095266 SQL wurde aktualisiert. – Kason

Verwandte Themen