Сортировка с заданным параметром MySql

300
06 ноября 2017, 23:11

Добрый день! Есть такой запрос

SELECT distinct p.id, p.articul, p.price, p.count, p.title
FROM tm_product p
INNER JOIN tm_gallery ph ON p.id = ph.id_product
WHERE p.id_subcategory = $id_subcategory
ORDER BY p.id DESC

Который показывает все товары, по заданной категории, у которых есть изображение.

Есть второй запрос

SELECT distinct p.id, p.articul, p.price, p.count, p.title
FROM tm_product p
LEFT JOIN tm_gallery ph ON p.id = ph.id_product
WHERE p.id_subcategory = $id_subcategory and ph.id is null
ORDER BY p.id DESC

Аналогично только показывает у которых нету изорбражения.

А какой запрос можно написать что бы показать все товары но с сортировкой, сначала те которые с изображением, а потом у которых нету фото.

SELECT distinct p.id, p.articul, p.price, p.count, p.title
FROM tm_product p
WHERE p.id_subcategory = $id_subcategory 
ORDER BY ???
Answer 1

используйте CASE для сортировки и LEFT JOINдля связывания таблиц.

SELECT distinct p.id, p.articul, p.price, p.count, p.title
FROM tm_product p
LEFT JOIN tm_gallery ph ON p.id = ph.id_product
WHERE p.id_subcategory = ?
ORDER BY 
    CASE WHEN ph.id IS NULL THEN 0 ELSE 1 END
  , p.id DESC
READ ALSO
Когда использовать стандартные сессии PHP когда свои?

Когда использовать стандартные сессии PHP когда свои?

Всем привет! В PHP есть встроенные сессииКуча возможностей и прочее

206
file_get_contents() выдает кракозябры, как поправить? [требует правки]

file_get_contents() выдает кракозябры, как поправить? [требует правки]

file_get_contents() выдает кракозябры, как поправить?

253
Сделать предыдущую кнопку не нажатой (не выпуклой)

Сделать предыдущую кнопку не нажатой (не выпуклой)

Имеется большое количество кнопок и такое же количество радиокнопокНужно что бы при нажатии кнопки параллельно включалась радио кнопка,...

314