基本上,我想要做的就是将4张桌子连在一起,每艘船返回1行。
表格布局
[船]
id, date, section, raft
[照片]
id, boatid, pthurl, purl
[River_Company]
id, sort, company, company_short
[River_Section]
id, section
就结构而言,它非常简单,但是,我有时间试图让它只返回一行。没有船会在同一天出现,唯一弄乱这一点的是照片桌。
如果你知道一个更好的方法来返回所有船只的记录表,只有照片表中的一张照片,请发布!!
所需格式
boats.id, boats.date, river_company.company, river_section.section, photos.purl, photos.pthurl
答案 0 :(得分:4)
基本上是如何加入工作的。由于boats
和photos
属于一对多关系,并且您希望一对一式查询,因此您需要明确用谓词来表达它。例如:
select b.*
from
boats b
inner join photos p
on b.id = p.boatid
where p.id = (select max(id) from photos where boatid = b.id)
答案 1 :(得分:1)
假设您的ID
列是您设计的关系:
SELECT Boats.* FROM Boats
LEFT OUTER JOIN Photos on Photos.ID =
(
SELECT TOP 1 Photos.ID FROM Photos
INNER JOIN Boats ON Photos.BoatID = Boats.ID
)
INNER JOIN River_Company on River_Company.ID = Boats.ID
INNER JOIN River_Section on River_Section.ID = Boats.ID
基本上,这将是:
保证最大行数为1.(这有点脏,但事实上如果您有多张照片,否则会返回多个链接)
如果没有照片,船仍然会被退回