2012-04-01 21 views
1

Ich habe dieses kleine Skript, das jeden Tag eine Weisheit zeigt.Wie zeigt man einen Datensatz pro Tag nach ID?

so habe ich drei Spalten.

Id   wisdom   timestamp 
1   wisdon 1  4/1/2012 
2   wisdon 2  4/1/2012 
3   wisdon 3  4/2/2012 

und ich möchte für jeden Tag-Array von einer Weisheit holen

ich um Ihre Website gesucht, aber leider habe ich nicht etwas Ähnliches finden, was ich will.

auch habe ich diesen Code

$sql = mysql_query("SELECT DISTINCT id FROM day_table group by timestamp"); 

aber diese Arbeit auch nicht. irgendwelche Ideen?

ist es möglich, einen Zähler von 24 Stunden Update Weisheit Datum zu machen? bitte geben Sie mir Hilfe.

+0

Können Sie das erwartete Ergebnis tabellarisch angeben?Könnte einfacher zu verstehen sein –

+0

Ich möchte Array von $ SQL holen und Echo Weisheit und bekomme jeden Weisheit pro Tag. –

+0

Da gibt es zwei Weisheit Zitate für 4/1/2012, welche würden Sie lieber gezeigt werden? – hjpotter92

Antwort

2

Sie einen anderen Tisch machen, die wisdom_of_day

Die Tabelle enthält die folgenden Spalten, id, wisdom_id, Datum

Im Grunde jeden Tag müssten Sie genannt wird, kann zufällig Wähle eine Weisheit aus deinem Weisheitstisch und füge sie in den Weisheitstisch ein. Sie können Ihrer Datumsspalte auch eine Einschränkung hinzufügen, damit sie eindeutig ist. Es ist wichtig, dass es sich um eine Datumsspalte und nicht um einen Zeitstempel handelt, da Ihnen die Zeit egal ist.

Dann können Sie die Weisheit des Tages abrufen, indem Sie basierend auf dem Datum abfragen.


Es ist möglich, dass ich Ihre Frage falsch gelesen und Sie wollen nur für jeden Tag eine Weisheit wählen, aber Sie wollen mehrere Tage zeigen, und Sie möchten die Daten von Ihrem Tisch zu bekommen.

Wenn dies der Fall ist, ist der Grund dafür, dass Ihre Abfrage nicht funktioniert, weil Sie nach einem Zeitstempel gruppieren, der das Datum und die Uhrzeit enthält. Sie müssen es nach Datum gruppieren, damit es wie gewünscht gruppiert werden kann.


Hier ist eine Abfrage, die nach dem Tag richtig gruppiert. Dies funktioniert nur, wenn Sie ein Timestamp-Feld haben und keinen Unix-Timstamp in einer int-Spalte speichern.

Hmm, mir ist aufgefallen, dass Ihre Timestamp-Werte in einer Art Datumsformat vorliegen, vielleicht als String? Wenn dem so ist, wird die obige Abfrage wahrscheinlich nicht funktionieren.

+0

es ist möglich, aber es ist auch in einer Tabelle möglich. –

+0

Ja, ich habe meine Antwort darauf geändert, warum Ihre Anfrage nicht funktioniert. Ich habe etwas missverstanden. Ich habe noch keine Beispielabfrage. Ich muss es zuerst testen und ich werde zu dir zurückkommen. – Gohn67

+1

Ich habe eine Abfrage hinzugefügt, die nach Datum gruppiert wird. Ich habe es aus einer meiner Datenbanken getestet und es hat für mich funktioniert. – Gohn67

1

erste Rechen Anzahl der Tage seit 1970

SELECT DATEDIFF(CURDATE(), '1970-01-01') 

Dann legen Sie diese Zahl innerhalb RAND, zum Beispiel:

SELECT * FROM table ORDER BY RAND(15767) LIMIT 1; 

Rand mit Nummer als Argument deterministisch ist.

Voll query:

SELECT * FROM table ORDER BY RAND((SELECT DATEDIFF(CURDATE(), '1970-01-01'))) LIMIT 1; 
+0

wenn ich das tue bekomme ich zufällige Weisheit jede Seite laden so –

+0

es sieht aus wie nicht die Weisheit des Tages mein Skript zeigt eine Weisheit pro Tag. und jeder sollte den gleichen sehen –

+0

Sie haben Recht. Ich habe meine Antwort komplett umgeschrieben. –

Verwandte Themen