2013-05-27 2 views
-1

Мне нужна помощь в написании запроса mysql. У меня две таблицы, один родитель, один ребенок.Запрос MySQL для родительской и дочерней таблицы

Родитель стол: garments

`garment_id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(100) NOT NULL, 
    `description` text, 
    PRIMARY KEY (`garment_id`) 

Детский стол: garment_images

`id` int(11) NOT NULL AUTO_INCREMENT, 
    `garment_id` int(11) NOT NULL, 
    `filename` varchar(100) NOT NULL, 
    `order` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`) 

Я хотел бы запросить все одежды, и, чтобы показать первое изображение для каждого элемента из таблицы 'garment_images.

+4

Я отлично, вы сначала что-то пробовали? –

+0

что вы пробовали? прочитайте эту статью: http://whathaveyoutried.com – Barranka

+0

Нет, не мог подумать, как даже начать это, извините. – Mike

ответ

0

Это должно быть довольно близко:

SELECT G.*, (
    SELECT GI.id, GI.filename from garment_images as GI 
     WHERE GI.garment_id = G.garment_id 
     ORDER BY GI.order DESC 
     LIMIT 1) 
FROM garments as G 
+0

У вас не может быть 2 столбца в встроенном подзапросе: 'SELECT GI.id, GI.filename' –

0

Split проблема:

  1. извлечь первый идентификатор изображения для каждого предмета одежды
  2. поместить данные вместе

Шаг 1:

select gi.* 
from 
    garment_images as gi 
    inner join (
     select min(id) as minId 
     from garment_images 
     group by garment_id 
    ) as a on gi.garment_id = a.minId 

Я оставлю вам второй шаг (Подсказка: присоединиться данные из запроса выше с таблицей одежды)

0

Если «первое изображение» является один с order = 1(SQL Fiddle)

SELECT * from garments g JOIN garment_images gi 
    ON g.garment_id = gi.garment_id 
    WHERE gi.order = 1 
Смежные вопросы