SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.12.2012 10:07:39

ipv
Участник
Зарегистрирован: 05.12.2012
Сообщений: 1

Извлечь данные из двух таблиц. Помогите составить запрос.

Добрый день!

Есть 2 таблицы - materials и images. Нужно выбрать всю информацию в порядке убывания по дате (это делаю самостоятельно) из materials, а потом посмотреть, есть ли для выбранной по дате информации хотя бы одна картинка. Если есть хотя бы одна - берем ее, если картинок  несколько - выбрать лучшую по итогам голосования картинку (может быть сколько угодно картинок, прикрепленных к одному image_material_id) из images.

Materials состоит из 15 полей, в целях выборки информации главными полями являются material_id (автоинкремент), а также material_date. Таблица images состоит из 9 полей, для сортировки нужны image_material_id (содержит material_id из materials), а также image_votes - просто содержит число либо со знаком "+" либо "-" (напр., 10 или -12 и т.д.)

Допустим в этому месяце есть 10 записей в materials. Берем их все, поскольку подходят по дате. Далее смотрим на таблицу images. Там есть, например, по 3 картинки только к 9 записям из materials. Получается, что берем только 9 записей, поскольку нам записи из materials без картинки из images не нужны. Вот тут-то у меня проблема - не получается выбрать лучшую картинку из каждых трех (как в примере) картинок по полю image_votes.

Помогите пожалуйста кто чем может)

Неактивен

 

#2 05.12.2012 10:13:03

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Извлечь данные из двух таблиц. Помогите составить запрос.

Как вариант можно с подзапросом, примерно так:

SELECT m.*,(SELECT * from images i WHERE i.image_material_id = m.id ORDER BY image_votes DESC LIMIT 1) FROM materials m ORDER BY material_date DESC;


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson