Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]select
Forum PHP.pl > Forum > Przedszkole
Ruch Radzionków
witam szukałem w google i tutaj na forum ale nie znalazłem. Mam taki problem mam otóż taki kod:
  1. $baza = mysql_query("SELECT * FROM test ORDER BY status");

i chodzi mi o to żeby gdy będzie status='1' to będzie na samym początku a gdy status='0' to bedzie się wyświetlał w różnych miejscach nie za pomocą np. id:
przykład

|4|nazwa|1|
|16|nazwa|1|
|27|nazwa|0|
|3|nazwa|0|
|15|nazwa|0|
|1|nazwa|0|
|16|nazwa|0|
|17|nazwa|0|
|37|nazwa|0|

nie wiem jak to zrobic pomoże mi ktoś
by_ikar
No ale przecież zapytanie które pokazałeś spełnia moim zdaniem warunki których oczekujesz. Chyba że niezbyt jasno się wyraziłeś, lub ja ciebie źle zrozumiałem.
CuteOne
"ORDER BY status DESC"

google -> mysql order by
Ruch Radzionków
desc tez juz mam tylko tu nie dopisałem w sql mam tak

  1. CREATE TABLE `test` (
  2. `id` float NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(222) NOT NULL,
  4. `status` varchar(222) NOT NULL,
  5. PRIMARY KEY (`id`)
  6. );


i wyświetla na początku status większy ale chodzi mi o reszte potem jest po kolei id
nospor
http://nospor.pl/mysql-faq.html#faq-5

ps:
`id` float NOT NULL AUTO_INCREMENT,
no żeby float autoincrement robic to pierwszy raz takie cuda widze wink.gif

ps2:
`status` varchar(222) NOT NULL,
czemu robisz varchar ze status, skoro to 1 lub 0? Pisz optymalnie.
synec
Cytat(Ruch Radzionków @ 7.12.2011, 07:27:13 ) *
desc tez juz mam tylko tu nie dopisałem w sql mam tak

  1. CREATE TABLE `test` (
  2. `id` float NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(222) NOT NULL,
  4. `status` varchar(222) NOT NULL,
  5. PRIMARY KEY (`id`)
  6. );


i wyświetla na początku status większy ale chodzi mi o reszte potem jest po kolei id

To jak DESC już masz to jeszcze typ danych dla id daj INT(x) a dla status INT(1) za tego x wstaw liczbę.
nospor
Cytat
) a dla status INT(1)
jesli to są 1 i 0 to ma tam być tinyint a nie INT
Ruch Radzionków
dalej wyświetla po kolei
osc
To może napisz łaskawco jakiego kodu uzyles bo pewnie zlego
Ruch Radzionków
o co ci chodzi jakiego kodu
nospor
Zapewne chodzi mu o kod, który ci nie dziala....
Dostałeś ode mnie linka
http://nospor.pl/mysql-faq.html#faq-5
zastosowałeś się do niego? Ten link rozwiązuje Twój problem
Ruch Radzionków
Cytat(nospor @ 8.12.2011, 07:55:05 ) *
Zapewne chodzi mu o kod, który ci nie dziala....
Dostałeś ode mnie linka
http://nospor.pl/mysql-faq.html#faq-5
zastosowałeś się do niego? Ten link rozwiązuje Twój problem

zastosowałem dałem tak
  1. SELECT * FROM tabela ORDER BY pole=1 DESC, pole=2 ASC

zmieniłem też na init i nic dalej tak samo
Niktoś
Może tak?

  1. SELECT * FROM tabela ORDER BY ID=1 ASC ,ID=0 DESC, STATUS DESC


Już chyba bardziej przefiltrować tego nie można
nospor
Cytat
Kolejny przykład: chcemy posortować pola tak, by najpierw pojawił się rekord o zadanej wartości pola (np. 1), a potem rekordy posortowane rosnąco według innego pola
1
select * from tabela order by pole=1 desc, pole2 asc

Drugiemu polu już nie określa się wartości. Przecież status chciałeś tylko dla 1 mieć na gorze, reszta miała chyba już leciesz z sosrtowaniem po innym polu
Ruch Radzionków
reszta miała nie leciec po innym polu tylko w tym samym żeby się mieszała ta druga czesc
nospor
Nie kumam.... to status =1 ma byc na górze a reszta obojętnie? No to:
select * from tabela order by pole=1 desc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.