![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 228 Pomógł: 7 Dołączył: 15.08.2012 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Witam! Nie mogę znaleźć nigdzie.. Proste zapytanie do bazy np:
wyświetli rekordy w kolejności : 2, 15, 23, 54, 56, 67, 95 a ja chcę dokładnie tak jak wrzuciłem do IN(xxx). testowałem i do nawiasu na pewno są wrzucane id w takiej kolejności jak ja chcę a wyświetla się w kolejności rosnącej jak sprawić żeby było po mojemu? z góry dzięki |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 325 Pomógł: 33 Dołączył: 31.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
nie wiem czy ak mozna, ale sprobuj dodac order by null do zapytania
Ten post edytował kamil_lk 18.02.2013, 01:32:28 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie określiłeś nigdzie kolejności w jakiej mają być zwrócone rekordy (klauzula ORDER BY), więc kolejność zwracanych rekordów jest nieokreślona. Jeżeli korzystasz z MySQL-a, możesz wykorzystać funkcję FIELD() do określenia kolejności:
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 228 Pomógł: 7 Dołączył: 15.08.2012 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Crozin pomogło po Twojemu ale teraz zapytanie wygląda tak:
wtedy wszystko działa i sortowanie jest po mojemu tyle, że jeśli będę miał np do wyświetlenia 200 rekordów to mogę skorzystać z takiego sposobu? Wtedy zapytanie jest bardzo długie, ponieważ muszę 2 razy użyć zmiennej $id edit: mam jeszcze jedno pytanie: przykład:
Pytanie brzmi -jak wypełnić pustą wartością jeżeli rekord nie zostanie odnaleziony w tabeli ponieważ go tam już nie ma? Załóżmy, że nie ma w tabeli usera o id 95, wtedy rezultat tego zapytania będzie wyglądał następująco:
Ja jednak potrzebuję, żeby wyglądało to mniej więcej tak:
Czy jest to możliwe? Nie wiem czy dobrze to opisałem, chciałbym po prostu podczas zapytania gdzie wykorzystuję IN() wyświetlić również rekordy które nie istnieją, czyli w momencie jeżeli nie znalazł rekordu o id jednym z tych w nawiasie IN(xx, xx, xx, xx) to żeby wyświetlił również w tablicy tylko jako pole puste lub '0'. Czy da się to zrobić za pomocą jakiegoś tajemniczego sposobu już na poziomie zapytania do bazy czy trzeba kombinować z pętlami? Ten post edytował adamantd 18.02.2013, 17:17:25 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
W samym zapytaniu już tego w żaden sposób nie zrobisz. A nawet jeżeli się da, to zapewne jakimiś okropnymi potworkami. Zrobienie tego po stronie PHP nie będzie natomiast stanowić najmniejszego problemu.
Swoją drogą, masz tutaj dobry przykład dlaczego z bazy danych w miarę możliwości niczego się nie kasuje, a jedynie oznacza jako skasowane i filtruje w wynikach normalnych zapytań. PS. Ilość 200 pozycji w IN()/FIELD() nie powinna stanowić jakiegoś ogromnego problemu - zawsze zresztą możesz samemu to sprawdzić. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 228 Pomógł: 7 Dołączył: 15.08.2012 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Crozin wielkie dzięki za naprowadzenie mnie na odpowiedni tor, przerobię odpowiednio tabelę z userami i jeżeli user usunie konto to nie usunę rekordu tylko oznaczę go jako usunięty. Nie wpadłem na takie rozwiązanie.
p.s. -po stronie php chciałem uniknąć bo musiałbym zrobić pętlę w której za każdym zapętleniem wysyłane byłoby zapytanie (w rezultacie sporo zapytań zamiast jednego) problem rozwiązany |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 17:52 |