Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Сложный запрос из двух таблиц  (Прочитано 1256 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Delfin

  • Автор темы
  • Участник
  • *
  • Сообщений: 190
  • u 7.10
    • Просмотр профиля
Сложный запрос из двух таблиц
« : 03 Января 2008, 00:55:00 »
Есть две таблицы.
В одной: d_id      d_date                f_id    user_id
                1      1199290023            1      1
                2      1199290080            2      1
                3      1199290087            2      1
В другой: f_id    f_name               f_download
                1        Первый файл    33
                2        Второй файл     32

Собственно первая таблица - логи скачивания файлов, ид, дата, ид файла, ид пользователя.

Во второй таблице ид файла, название и общее количество скачиваний.

Нужно сделать выборку на последние 10 скаченных файлов (не должны повторятся). Выводить названия и общее количество скачиваний..

Пробовал такой запрос:   
Выделить всёкод SQL
   
SELECT DISTINCT download.user_id,download.f_id,file.f_name,file.f_downloads FROM ".SQL_PREFIX."ds_download AS download, ".SQL_PREFIX."ds_file AS file  WHERE download.user_id=".$member['id']
Но результат вообще не тот. Файлы повторяются одни и теже.


Помогите пожалуйста, как этот запрос сдеать?

Оффлайн Geba

  • Любитель
  • *
  • Сообщений: 61
  • Весенний дождик я )
    • Просмотр профиля
    • Geba's blog
Re: Сложный запрос из двух таблиц
« Ответ #1 : 03 Января 2008, 12:27:08 »
Имея структуру
CREATE TABLE `ds_download` (
  `d_id` int(11) default NULL,
  `d_date` datetime default NULL,
  `f_id` int(11) default NULL,
  `user_id` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

/*Data for the table `ds_download` */

insert into `ds_download` (`d_id`,`d_date`,`f_id`,`user_id`) values (1,'2007-12-11 05:00:00',1,1),(2,'2007-12-12 06:00:00',2,1),(3,'2007-12-11 07:00:00',2,1);

/*Table structure for table `ds_file` */

CREATE TABLE `ds_file` (
  `f_id` int(11) default NULL,
  `f_name` varchar(255) character set cp1251 default NULL,
  `f_download` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

/*Data for the table `ds_file` */

insert into `ds_file` (`f_id`,`f_name`,`f_download`) values (1,'Первый файл',33),(2,'Второй файл',32);

То запрос :
SELECT * FROM ds_download LEFT JOIN ds_file USING(f_id)
GROUP BY ds_file.f_id
ORDER BY d_date DESC
LIMIT 0,10

Выведет 10 последних по дате и неповторяющихся закачек
d_idd_datef_iduser_idf_idf_namef_download
22007-12-12 06:00:00212Второй файл32
12007-12-11 05:00:00111Первый файл33
« Последнее редактирование: 03 Января 2008, 12:29:32 от Geba »

 

Страница сгенерирована за 0.031 секунд. Запросов: 25.