ďťż
Podstrony
|
telcocafeSELECT ID,name FROM obrazy WHERE ID < 999 ORDER BY ID DESC LIMIT 1 UNION SELECT ID,name FROM obrazy WHERE ID > 999 ORDER BY ID LIMIT 1SQLite twierdzi, że ORDER BY powinien znaleźć się dopiero po słowie UNION. Nic nie daje użycie UNION ALL i wzięcie tych 2 zapytań w nawiasy. Czy pozostaje wysyłać 2 oddzielne zapytania? Może są inne metody na wyciągnięcie poprzedniego i kolejnego rekordu z bazy danych w 1 zapytaniu? Zapytanie musi działać w SQLite i MySQL. Poza tym można podpinać do ORDER BY? W SQLite nie ma błędu, ale i reakcji. $x = $db->prepare('SELECT ID,name FROM obrazy WHERE ID<4 ORDER BY :test LIMIT 1'); $x->bindValue(':test','ID DESC'); $x->execute();Niezależnie od tego, czy podepnę ID DESC, czy ID, otrzymuję ten sam rekord, choć powinien pojawić się inny. Właściwie zależy mi na pobraniu: - poprzedniego obrazu, a gdy nie ma - ostatniego - następnego obrazu, a gdy nie ma - pierwszego Użytkownik Ferrari edytował ten post 19 luty 2010, 17:29 A nie możesz dać ID-1 i pobrać 3 rekordów? :) A jeśli rekordów w 1 kategorii jest 100, to mam pobrać wszystkie? Może to nie jest taki zły pomysł, ale: 1. Nie mogę założyć, że pierwszy obraz w kategorii ma ID=1 2. Podobnie z ostatnim obrazem 3. Nie mogę założyć, że poprzedni obraz ma ID = ID_aktualnego - 1 4. Podobnie z następnym obrazem Podglądnąłem kod PHP-Fusion. Tam zdjęcia są posegregowane wg pola photo_order. Przy najmniejszej zmianie trzeba z powrotem segregować je na nowo, ale może warto? Przecież można sortować też wg nazwy. Użytkownik Ferrari edytował ten post 20 luty 2010, 15:56 |
|||
Sitedesign by AltusUmbrae. |