Was ich versuche zu tun ist, greifen Einträge aus einer Update-Tabelle in einer MySQL-Datenbank mit PHP. An jeden Eintrag ist ein Zeitstempel angehängt. Zuerst erstelle ich 10 verschiedene Daten aus dem Zeitstempel, erstelle ein neues Array unter Verwendung dieser 10 eindeutigen Daten (ich mache das, weil fetchAll die Daten in ein mehrdimensionales Array legt), dann führe einen weiteren Datenbankaufruf durch und packe alle Einträge mit diesen Daten. Das kann mehr als 10 Einträge zurückgeben. Ich möchte, dass es 10 verschiedene Daten gibt, nicht 10 verschiedene Zeitstempel.MySQL wählen nach eindeutigem Datum, mit Limit am Datum, aber keine Einträge
Zum Beispiel, wenn 2012-03-25 in dem ersten Anruf aus verschiedenen Terminen auftauchen, kann es finden:
2012-03-25 00:58:53
2012-03-25 00:58:02
2012-03-25 00:57:20
2012-03-25 00:56:35
2012-03-25 00:55:58
2012-03-25 00:53:20
2012-03-25 00:52:32
2012-03-25 00:51:45
Da die Zeitstempel unterschiedlich sind.
Hier ist der aktuelle Code, den ich benutze, der funktioniert.
$test = $dbh->getArray("SELECT DISTINCT DATE_FORMAT(added, '%Y-%m-%d') AS added FROM db_updates ORDER BY added DESC LIMIT 0,10");
foreach ($test as $entry) {
list($date) = $entry;
$output[] = '\''.$date.'\'';
}
$test2 = $dbh->getArray("SELECT * FROM db_updates WHERE DATE_FORMAT(added, '%Y-%m-%d') IN (".implode(',', $output).") ORDER BY added DESC");
print_r($test2);
Dies ergab 33 Ergebnisse.
Nur für den Fall, dass jemand fragt, verwende ich PDO und nicht die MySQL-Funktion in PHP. Dieser Code ist hier:
public function getArray($query) {
$result = $this->db->query("$query");
return $result->fetchAll(PDO::FETCH_NUM);
}
Das alles funktioniert 100%, und es tut was ich will es zu tun. Meine Frage ist jedoch, ob es eine Möglichkeit gibt, all dies mit nur einem einzigen mysql-Aufruf zu tun, so dass ich nicht zweimal mit einer Schleife in der Mitte anrufen muss.
Ich habe versucht, es herauszufinden, indem ich google und Versuch und Irrtum mit Joins und so ohne Erfolg.
Perfect. Danke :) Müssen noch 7 Minuten warten, bevor ich das als Antwort annehmen kann. – WMI