Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] sortowanie i puste pola
Forum PHP.pl > Forum > Bazy danych > MySQL
Toom
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
Adiasz
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.
TomASS
ad2. da się 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;
060156
Mozna, jeszcze prosciej

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