如何select所有记录组成如下关系的三张表
How to select all records form three tables having following relation
地点 => PID (PK),名称 ...
标签 => TID (PK),标签名称 ...
TagPlaceRelation => ID (PK), PID (FK) , TID (FK) 多对多关系
如何获取所有地点记录及其所有标签
我尝试了以下查询,它 return 记录了所有地点,但它只包含与每个地点关联的第一个标签,这不是必需的。我怎样才能获得一个地方的所有标签以及地点数据。
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
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 将被一个一个地重复三次
地点 => PID (PK),名称 ...
标签 => TID (PK),标签名称 ...
TagPlaceRelation => ID (PK), PID (FK) , TID (FK) 多对多关系
如何获取所有地点记录及其所有标签
我尝试了以下查询,它 return 记录了所有地点,但它只包含与每个地点关联的第一个标签,这不是必需的。我怎样才能获得一个地方的所有标签以及地点数据。
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
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 将被一个一个地重复三次