2010-10-28 2 views
1

Это код, который у меня есть: В таблице «media_work» есть поле «order», которое указывает порядок файлов. Я хочу, чтобы отсортировать результаты таблицы «media_work», чтобы получить первый элемент (изображение)Заказ результата левого соединения

Этот код работает, но не заказать «» media_work

SELECT work.id, work.title, media.file_name_thumb,media_work.order, 
COUNT(media.file_name_thumb) AS mycount 
FROM work 
LEFT OUTER JOIN media_work ON media_work.work_id = work.id 
LEFT OUTER JOIN media ON media_work.media_id = media.id 
GROUP BY work.id ORDER BY work.id DESC 

Это результат

id title   file_name_thumb     order mycount 
------------------------------------------------------------------- 
3 laatste  thumb_20101028134738_278.gif 1  3 
2 test work add thumb_20101028133811_893.gif 1  56 
1 test werk  thumb_20101028132316_537.jpg 2  5 

Я хочу, чтобы заказать Восходящий так что это будет «0»

+0

Вы можете заказать заказ через media_work.order? – Orbit

+0

Что вы говорите? Я всегда, хотя «GROUP BY» должен был использоваться в сочетании с агрегатной функцией или включать все выбранные столбцы (такие же, как DISTINCT). Кроме того, попробуйте показать пример полученных результатов и то, как они отличаются от результатов, которые вы хотите. – Phil

+0

@Phil: 'MySQL' позволяет это, хотя он не будет работать, как хочет @op. – Quassnoi

ответ

2

Если вы хотите, чтобы выбрать первый media для каждого work:

SELECT work.id, work.title, media.file_name_thumb, 
     (
     SELECT COUNT(*) 
     FROM media_work 
     WHERE media_work.work_id = work.id 
     ) 
FROM work 
LEFT JOIN 
     media 
ON  media.id = 
     (
     SELECT media_work.media_id 
     FROM media_work 
     WHERE media_work.work_id = work.id 
     ORDER BY 
       media_work.work_id, media_work.order 
     LIMIT 1 
     ) 

Создайте индекс на media_work (work_id, order), чтобы работать быстро.

+0

Это работает хорошо, но я также хочу подсчет «медиа» таблицы. Как это работает? – waterschaats

+0

Огромное спасибо! – waterschaats

Смежные вопросы