par
Hubert Roksor » 03 avr. 2006, 16:13
J'aurais une meilleure solution à proposer, celle-ci:
Code : Tout sélectionner
SELECT *
FROM products
ORDER BY (mark = 'SONY') DESC, price ASC
Normalement,
(mark = 'SONY') équivaut à
1 ou
0 selon si c'est vrai ou faux. Au fait, pour info "marque" se traduit par "brand"
On peut étendre la technique à plusieurs marques si nécessaire, et ajouter une sorte de mini-classement supplémentaire. Par exemple, les appareils SONY en premier, puis TOSHIBA:
Code : Tout sélectionner
SELECT *,
CASE mark
WHEN 'SONY' THEN 2
WHEN 'TOSHIBA' THEN 1
ELSE 0
END AS rank
FROM products
ORDER BY rank DESC, price ASC
J'aurais une meilleure solution à proposer, celle-ci:
[code]SELECT *
FROM products
ORDER BY (mark = 'SONY') DESC, price ASC[/code]
Normalement, [b](mark = 'SONY')[/b] équivaut à [b]1[/b] ou [b]0[/b] selon si c'est vrai ou faux. Au fait, pour info "marque" se traduit par "brand" ;)
On peut étendre la technique à plusieurs marques si nécessaire, et ajouter une sorte de mini-classement supplémentaire. Par exemple, les appareils SONY en premier, puis TOSHIBA:
[code]SELECT *,
CASE mark
WHEN 'SONY' THEN 2
WHEN 'TOSHIBA' THEN 1
ELSE 0
END AS rank
FROM products
ORDER BY rank DESC, price ASC[/code]