Dieser war schwierig zu quantifizieren, so dass ich nicht diese Frage zum ersten Mal richtig formuliert haben kann.Wählen Sie den vorherigen Datensatz mit mehreren Bedingungen in Mysql
Ich habe eine Tabelle nach einem ähnlichen Format wie folgt aus:
| id | other_id | timestamp |
| 1 | 1 | 2012-01-01 |
| 2 | 1 | 2012-01-02 |
| 3 | 2 | 2012-01-02 |
Was ich versuche zu tun ist, da die Aufzeichnung mit ‚id‘ 2 und ähnliche Datensätze, für die die ‚id‘ Spalte Wert ist bekannt und ist einzigartig und die "andere_id" bekannt ist entsprechend, wie finde ich, für jeden, die 'ID' des Datensatzes mit der gleichen 'anderen_id', aber die erste niedrigere 'id' als die ich bereits kennt.
z.
$arrKnownIds = array (
0 => array('id'=>2,'other_id'=>1),
1 => array('id'=>3,'other_id'=>2)
);
Mit dieser Info, würde Ich mag eine Abfrage, so dass diese Ergebnisse laufen:
while($row = mysql_fetch_assoc($result)) {
$arrPreviousIds[$row['other_id']] = $row['id'];
// having in this case values of:
// $row['other_id'] = 2;
// $row['id'] = 1;
}
ich, wenn ich dies mit UNION, mehrere PHP-Abfrage bewältigen muß, kann nicht ganz klappen Aussagen oder wenn es einen anderen Weg gibt.
Irgendwelche Gedanken, wie man dieses anpackt, werden sehr geschätzt.
Thanks :)
bearbeiten - Die ursprüngliche Abfrage nimmt die folgende Form:
SELECT DISTINCT(`other_id`), MAX(`id`), MAX(`timestamp`)
FROM `event`
GROUP BY `other_id`
ORDER BY `id` DESC, `other_id` ASC
LIMIT 0, 10
// Hier werden die letzten 10 einzigartige Events bekommen soll und finden, wenn sie aufgetreten sind.
// Von diesem versuche ich dann herauszufinden, wann sie vorher aufgetreten sind.
Ich bin mir nicht sicher, ob ich verstehe, was Sie wollen. Bei ID 2 sollte ID 1 zurückgegeben werden, weil es die höchste ID ist, die kleiner als 2 ist, mit other_id = 1. Stimmt das? Also, gegeben ID 3 sollte es null zurückgeben, da es keine untere ID mit other_id = 2 gibt? – nnichols
@nnichols, Ja - das ist genau richtig, wie Sie es beschrieben haben. – MyStream