Ich verwende diese SQL-Abfrage, um eine Liste von Datensätzen nach Datum auf einer PHP-Seite zu sortieren.Auswählen des nächsten Datensatzes aus einer nach Datum sortierten Liste
SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME FROM table WHERE upper(ARTICLE_NAME) LIKE % x % ORDER BY str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s');
Das funktioniert gut.
In einer anderen PHP-Seite möchte ich diesen Datensatz löschen und den nächsten in der Liste anzeigen können. Die Abfrage ich das tun bin mit ist:
SELECT ARTICLE_NO FROM auctions1 WHERE str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s') > (SELECT str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s') FROM table WHERE ARTICLE_NO =".$pk.") ORDER BY str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s') LIMIT 1";
Das Problem, das ich scheinen mit zu sein, wird, weil es viele Datensätze mit demselben Datum sind, jeder Datensatz aus der Gruppe von Datensätzen mit dem gleichen Datum wird gewählt werden , nicht das gleiche in der Liste.
Wie kann ich den nächsten Datensatz auswählen, der von der gleichen Ergebnismenge wie die erste Abfrage zurückgegeben wird? Die erste Abfrage gibt immer die gleiche Reihenfolge zurück, daher bin ich mir nicht sicher, warum die zweite Abfrage eine andere Reihenfolge zu haben scheint.
edit:
Ich habe versucht, Quassnoi Ratschläge zu verwenden. Die erste Abfrage ich jetzt benutze ist:
SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME,
date_format(str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), '%d %m %Y') AS shortDate
FROM AUCTIONS1
WHERE upper(ARTICLE_NAME) LIKE % x %
ORDER BY
str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), article_no limit 0, 10
Und die zweite Abfrage, wie von Quassnoi ist:
SELECT ARTICLE_NO
FROM auctions1
WHERE (str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), article_no) >
(
SELECT str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), article_no
FROM auctions1
WHERE ARTICLE_NO = xxx
)
ORDER BY
str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), article_no
LIMIT 1
ich diese Abfrage kopiert, indem Sie es durch meine PHP-Seite Echo und einfach platziert xxx anstelle der article_no, die vorhanden war. Dies stimmt perfekt mit dem ersten Codebeispiel überein, aber die Ergebnisse sind die gleichen wie der Code, den ich in meiner ursprünglichen Frage verwendet habe.
edit2:
Dies ist die Abfrage verwendet, um die ursprüngliche Ergebnismenge zu erhalten:
SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME, date_format(str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), '%d %m %Y') AS shortDate FROM auctions1 WHERE upper(ARTICLE_NAME) LIKE '%o%' ORDER BY str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), article_no limit 0, 10;
, die in dieser Daten ergibt sich, was in Ordnung ist:
ARTICLE_NO USERNAME ACCESSSTARTS ARTICLE_NAME shortDate
160288212077 5864_australen 30/09/2008 05:22:30 DON ED HARDY TIGER JACKE WEISS XL 30 09 2008
220288566257 fashionticker1 01/10/2008 16:39:12 Ed Hardy Tank Top Lila Neu & OVP Gr. L 01 10 2008
280273115680 mulle15 01/10/2008 16:42:38 Ed Hardy, T-Shirt,Destroy, schwarz, Gr.L 01 10 2008
280273115991 mulle15 01/10/2008 16:43:54 Ed Hardy, T-Shirt,Destroy, schwarz, Gr.XL 01 10 2008
280273116224 mulle15 01/10/2008 16:44:59 Ed Hardy, T-Shirt,Destroy, schwarz, Gr.XXL 01 10 2008
280273118653 mulle15 01/10/2008 16:54:50 Ed Hardy, T-Shirt,King Snoopy,chocolate, Gr.M 01 10 2008
120312402767 lieschenjuli 01/10/2008 16:56:12 Badehose Shorts Ed Hardy L 01 10 2008
280273119206 mulle15 01/10/2008 16:56:47 Ed Hardy, T-Shirt,King Snoopy,chocolate, Gr.XL 01 10 2008
280273119489 mulle15 01/10/2008 16:57:49 Ed Hardy, T-Shirt,King Snoopy,chocolate, Gr.XXL 01 10 2008
160288777155 bonifatzius1 01/10/2008 16:58:33 Ed Hardy Bomberjacke Gr. L Jacke für Damen oder H... 01 10 2008
Das Problem ist, Wenn ich diese Abfrage durchführe:
SELECT ARTICLE_NO
FROM auctions1
WHERE (str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), article_no) >
(
SELECT str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), article_no
FROM auctions1
WHERE ARTICLE_NO =160288212077
)
ORDER BY
str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), article_no
LIMIT 1;
Das gibt 280273112610 zurück, wenn 220288566257 zurückgegeben werden soll
Bitte senden Sie einige Beispieldaten aus Ihren Tabellen und was Sie als Ergebnis erhalten möchten. – Quassnoi
ok, posten jetzt. –
Sicher habe ich vergessen, LIKE Bedingung hinzuzufügen. Siehe die erste Abfrage in meinem Post. – Quassnoi