sql多对多用连接选择

时间:2012-10-14 19:12:51

标签: mysql sql

我正在尝试制作一个精选语句而我无法让它发挥作用。

我有3张桌子: placestagsplaces_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 个答案:

答案 0 :(得分: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