如何从具有以下关系的三个表中选择所有记录

时间:2019-05-16 21:31:52

标签: mysql relational-database one-to-many

位置=> PID(PK),名称...

Tag => TID(PK),TagName ...

TagPlaceRelation => ID(PK),PID(FK),TID(FK)多对多关系

如何获取所有位置记录及其所有标签

我尝试了以下查询,它返回了所有场所记录,但它仅包含与每个场所相关联的第一个标记,而并非必须。如何获取地点的所有标签以及地点数据。

SELECT p.PID, t.TagName     
FROM Place p    
LEFT JOIN TagPlaceRelation  tp ON p.PID= tp.PID    
LEFT JOIN Tag t ON tp.TID=t.TID    
ORDER BY p.ID

1 个答案:

答案 0 :(得分:0)

SELECT p.PID, t.TagName 
  FROM Place p LEFT JOIN TagPlaceRelation tp ON p.PID= tp.PID 
    LEFT JOIN Tag t ON tp.TID=t.TID;

现在将获得所有带有标签的地方。现在,如果我们的place1具有3个标签,则将place1与标签一一重复进行三次