2012-10-14 4 views
0

나는 select 문을 만들려고 노력하고있다. 나는 그것을 작동시키지 않는다.sql many to many join join with

내가 3 개 테이블이 있습니다 places, tags, places_tags

Places: 
    - id 
    - name 

Tags: 
    - id 
    - name 

Places_tags: 
    - place_id 
    - tag_id 
    - order 

내가 노력하고 장소를 선택하고 (사용 순서) 삽입 된 첫 번째 태그에 가입을

 
     SELECT p.*, t.tag_id AS tag 
     FROM `places` as p 
     LEFT JOIN places_tags t ON (t.place_id = p.id) 
     group by p.id 

내가 가진 무엇을 그 지금. ORDER BY 주문 DESC처럼 뭔가를 추가해야합니다.

나는 제대로하지 않을 것이라고 생각합니다. 다음과 같은

+1

은 accepetance 속도 향상을 고려하시기 바랍니다. – SchmitzIT

+0

조언을 주셔서 감사합니다 ... 그럴 것입니다 – Amir

답변

0

뭔가 작업을해야합니다 :

SELECT 
    p.name AS "place", 
    t.name AS "firstTag" 
FROM 
    places p 
    LEFT JOIN 
    places_tags pt1 
     ON pt1.place_id = p.id 
    LEFT JOIN 
    places_tags pt2 
     ON pt2.place_id = p.id AND pt2.tag_id < pt1.tag_id 
    LEFT JOIN 
    tags t 
     ON t.id = pt1.tag_id 
WHERE 
    pt2.tag_id IS NULL 
+0

그 대답은 저에게 도움이되는 것을 어떻게 보는지 – Amir

+0

@Amir 기본 아이디어는 결과에서 ID 열이 가장 작은 레코드에 자체 LEFT JOIN 및 필터를 사용하는 것입니다. – btiernay

+0

@Amir 접근 방식을 적용하기 위해 솔루션을 업데이트했습니다. 죄송합니다 명확하지 않은 경우 :) – btiernay