Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] sortowanie i puste pola
Toom
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 26.08.2004

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


Witam,
Mam tabelę produkty, zawierają m.in. pola cena, cena_nowa, rok_prod.

1. Jak posortować wg roku prod, aby produkty bez podanego roku były na końcu?

2. Jak posortować prod wg cen z uwzględnieniem ceny nowej (promocyjnej), tzn gdy mamy prod1 z ceną 10, prod 2 z ceną 40 i promocyjną 15 oraz prod 3 z ceną 30 zł, chciałbym rosnąco mieć wynik: prod 1, 2, 3

czy mają tu znaczenie typy pól null (mam ustawione "not", ale testowałem na obydwóch)

Pozdrawiam,
Tom
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Adiasz
post
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 28.02.2004

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


ad 1
sprubuj:
  1. SELECT *
  2. FROM my_table
  3. ORDER BY ISNULL(FIELD), FIELD [ ASC | DESC ]

ad2
Chyba nie da rady zrobic tego na poziomie bazy danych, redziesz musial przejechac wyciagnieta tablice phpcem i tam posortowac.
Go to the top of the page
+Quote Post
TomASS
post
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


ad2. da się (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Tabela:
  1. CREATE TABLE `test` (
  2. `ID` INT(10) NOT NULL AUTO_INCREMENT,
  3. `Nazwa` VARCHAR(25),
  4. `Cena` DOUBLE(10,2),
  5. `Cena_promocja` DOUBLE(10,2),
  6. UNIQUE (`ID`)
  7. );


Dane:
  1. INSERT
  2. INTO `test`
  3. (`ID`, `Nazwa`, `Cena`, `Cena_promocja`) VALUES ('', 'prod1', '10', NULL);
  4. INSERT
  5. INTO `test`
  6. (`ID`, `Nazwa`, `Cena`, `Cena_promocja`) VALUES ('', 'prod2', '40', '15');
  7. INSERT
  8. INTO `test`
  9. (`ID`, `Nazwa`, `Cena`, `Cena_promocja`) VALUES ('', 'prod3', '30', NULL);


Zapytanie:
  1. SELECT ID, Nazwa, CASE WHEN Cena_promocja<Cena THEN Cena_promocja ELSE Cena END AS Cena
  2. FROM test
  3. ORDER BY Cena;


Ten post edytował TomASS 8.05.2006, 23:58:54
Go to the top of the page
+Quote Post
060156
post
Post #4





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Columbus Georgia

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


Mozna, jeszcze prosciej

  1. SELECT *
  2. FROM my_table
  3. ORDER BY IF(cena='','99999999',cena);
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: 24.12.2025 - 00:22