2014-11-13 11 views
0

У меня есть таблица отзывов, названная 'testimonials_manager', и есть столбец с именем 'testimonials_image' для хранения пути и имени образа отзыва.Сортировка таблицы на основе значения, присутствующего в определенном столбце

Я хочу показать свой список свидетельств и сортировку списка на основе значения изображения, что означает первое шоу-показание, содержащее изображение, и те, которые не содержат изображения, которое отображается последним.

Возможно ли сортировать таблицу на основе значения, присутствующего в определенном столбце? Пожалуйста, помогите мне.

Моя структура таблицы:

CREATE TABLE IF NOT EXISTS `testimonials_manager` (
    `testimonials_id` int(11) NOT NULL auto_increment, 
    `language_id` int(11) NOT NULL default '0', 
    `testimonials_title` varchar(64) collate utf8_unicode_ci NOT NULL default '', 
    `testimonials_url` varchar(255) collate utf8_unicode_ci default NULL, 
    `testimonials_name` text collate utf8_unicode_ci NOT NULL, 
    `testimonials_image` varchar(254) collate utf8_unicode_ci NOT NULL default '', 
    `testimonials_html_text` text collate utf8_unicode_ci, 
    `testimonials_mail` text collate utf8_unicode_ci NOT NULL, 
    `testimonials_company` varchar(255) collate utf8_unicode_ci default NULL, 
    `testimonials_city` varchar(255) collate utf8_unicode_ci default NULL, 
    `testimonials_country` varchar(255) collate utf8_unicode_ci default NULL, 
    `testimonials_show_email` char(1) collate utf8_unicode_ci default '0', 
    `sidebox` int(1) NOT NULL default '0', 
    `status` int(1) NOT NULL default '0', 
    `date_added` datetime NOT NULL default '0000-00-00 00:00:00', 
    `testimonial_add` date NOT NULL, 
    `last_update` datetime default NULL, 
    `testimonial_products` varchar(300) collate utf8_unicode_ci NOT NULL default '0', 
    `testimonial_categories` varchar(300) collate utf8_unicode_ci NOT NULL default '0', 
    PRIMARY KEY (`testimonials_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ; 

Предположит, у меня есть 50 отзыва уже вставленный в мои таблицы, в которых 30 имеет свидетельства содержит изображение и отдых 20 отзывов не имеют никакого образа. Я хочу показать сначала, что 30 отзывов, которые содержат изображение на моей странице с отзывами, и после этого показывают те 20 отзывов, у которых нет изображения. Думаю, вы поймете, что я говорю?

+0

Все что вам нужно - ЗАКАЗАТЬ. Покажите нам свою таблицу и некоторые данные, и мы можем быть более конкретными. –

+0

Скажите, пожалуйста, где я размещаю структуру таблицы MySQL? –

+0

Вы можете отредактировать свое оригинальное сообщение или даже настроить [скрипт SQL] (http://www.sqlfiddle.com) –

ответ

0

Я хотел бы сделать это так:

SELECT * FROM testimonials_manager ORDER BY testimonials_image 
+0

Вы можете улучшить этот ответ, объяснив, почему это хороший способ решить проблему. –

0
SELECT * 
FROM testimonials_manager 
ORDER BY testimonials_image 

Для того, чтобы иметь нулевые значения testimonials_image идут на дно, но остальные результаты показывают, в порядке возрастания, вы можете заменить NULLs просто в порядке заказа.

SELECT * 
FROM testimonials_manager 
ORDER BY IFNULL(testimonials_image, 'zzz') 
+0

Я проверил ваш запрос, но это не то, что я хочу. Это не просто сортировать поле, я хочу, чтобы сортировать поле изображения, которое сначала содержит значение. –

+0

Я проверил ваш последний запрос, но он показывает мне синтаксическую ошибку MySQL, пожалуйста посмотрите на него и отправьте мне правильный номер –

0

После установления вашей скрипку я запустил этот запрос -

SELECT * 
FROM testimonials_manager 
ORDER BY testimonials_image DESC 

EXAMPLE

Вы также можете сделать это -

SELECT * 
FROM testimonials_manager 
ORDER BY ISNULL(testimonials_image), testimonials_image desc 
+0

Нет, это не соответствует моему требованию, извините, я уже опубликовал свой ответ, я исправил свою проблему после многого. Еще раз спасибо за потраченное время и подумайте о моей проблеме –

0

Да, я получил ответ после попытки много ... запрос, который выполняет мои требования, выглядит следующим образом:

SELECT * FROM `testimonials_manager` order by `testimonials_image` IS NULL DESC, `testimonials_image` DESC 
Смежные вопросы