2015-02-26 3 views
0

У меня есть таблица с записями и есть таблица под названием галерея. Я вставил слишком много фотографий, и я хочу выбрать только 2 случайных снимка из каждой галереи.MYSQL QUERY: выберите 1 строку из таблицы для каждого альбома.

здесь мой структурированная

CREATE TABLE IF NOT EXISTS `gallery` (
`gallery_id` int(11) NOT NULL, 
    `gallery_name` varchar(100) NOT NULL, 
    `gallery_name_seo` varchar(120) NOT NULL, 
    `gallery_client` varchar(100) NOT NULL, 
    `gallery_date` date NOT NULL, 
    `gallery_type` int(2) NOT NULL, 
    `gallery_desc` text, 
    `gallery_publish` char(1) NOT NULL DEFAULT 'N' COMMENT 'Y = Yes & N = No', 
    `gallery_added` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `deleted` int(11) NOT NULL DEFAULT '0' 
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 

и здесь другая таблица

Acctually там много примеров здесь, но я трудно понять,

как создать запрос от моей проблемы.?

благодаря

+0

Большой , Так в чем проблема? – Strawberry

+0

_ "и я хочу выбрать только 2 фотографии из каждой галереи" _ - два, что? Самые старые, самые новые, случайные, ... две фотографии? – CBroe

+0

Я хочу показать 2 случайных фото для каждой галереи .. –

ответ

0

Следующий запрос даст вам 1 случайное фото на id_gallery:

SELECT * 
FROM (SELECT * FROM `gallery_photo` ORDER BY RAND()) as `rand_photos` 
GROUP BY rand_photos.id_gallery 

Вы можете UNION его с собой, чтобы получить 2 случайные фотографии для каждой галереи:

SELECT * 
FROM (SELECT * FROM `gallery_photo` ORDER BY RAND()) as `rand_photo1` 
GROUP BY rand_photo1.id_gallery 
UNION 
SELECT * 
FROM (SELECT * FROM `gallery_photo` ORDER BY RAND()) as `rand_photo2` 
GROUP BY rand_photo2.id_gallery 
ORDER BY id_gallery 
Смежные вопросы