Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]select
Ruch Radzionków
post
Post #1





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

Ostrzeżenie: (0%)
-----


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ś
Go to the top of the page
+Quote Post
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
CuteOne
post
Post #3





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


"ORDER BY status DESC"

google -> mysql order by
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #4





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:style_emoticons/default/wink.gif)

ps2:
`status` varchar(222) NOT NULL,
czemu robisz varchar ze status, skoro to 1 lub 0? Pisz optymalnie.
Go to the top of the page
+Quote Post
synec
post
Post #6





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 26.10.2009

Ostrzeżenie: (0%)
-----


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ę.

Ten post edytował synec 7.12.2011, 10:23:37
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
) a dla status INT(1)
jesli to są 1 i 0 to ma tam być tinyint a nie INT
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #8





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

Ostrzeżenie: (0%)
-----


dalej wyświetla po kolei
Go to the top of the page
+Quote Post
-osc-
post
Post #9





Goście







To może napisz łaskawco jakiego kodu uzyles bo pewnie zlego
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #10





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

Ostrzeżenie: (0%)
-----


o co ci chodzi jakiego kodu
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #12





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Niktoś
post
Post #13





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


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

Ten post edytował Niktoś 9.12.2011, 01:11:08
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #15





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

Ostrzeżenie: (0%)
-----


reszta miała nie leciec po innym polu tylko w tym samym żeby się mieszała ta druga czesc
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Nie kumam.... to status =1 ma byc na górze a reszta obojętnie? No to:
select * from tabela order by pole=1 desc
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 20:11