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

분할 문제 :

  1. 데이터를 함께

단계를 넣어 모든 의류

  • 에 대한 첫 번째 이미지 ID를 Retreive 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 
    
    와 하나입니다
    관련 문제