我的数据库中有以下表格:
sites (SiteID, SiteName)
parameters(ParameterID, ParameterName, ParameterUnits)
sites_parameters(SiteID, ParameterID)
一个站点可以测量零个或多个参数,例如站点“蓝湖”测量“温度”和“水位”。
我需要编写以下 SQL 查询:查找测量所有指定参数的所有站点。例如,查找在同一地点测量温度、水位和压力的所有地点。
对于两个参数(假设参数 ID 为 1 和 2),以下查询有效:
SELECT s.SiteID, s.SiteName, p1.ParameterID, p2.ParameterID
FROM sites s
INNER JOIN sites_parameters p1 ON s.SiteID = p1.SiteID
INNER JOIN sites_parameters p2 ON s.SiteID = p2.SiteID
WHERE p1.ParameterID = 1 AND p2.ParameterID = 2
如果我需要查找具有 3 个或更多参数的站点,我该如何编写查询?我设法使它工作的唯一方法是为每个额外的参数添加一个额外的 INNER JOIN 语句:
SELECT s.SiteID, s.SiteName, p1.ParameterID, p2.ParameterID, p3.ParameterID
FROM sites s
INNER JOIN sites_parameters p1 ON s.SiteID = p1.SiteID
INNER JOIN sites_parameters p2 ON s.SiteID = p2.SiteID
INNER JOIN sites_parameters p3 ON s.SiteID = p3.SiteID
WHERE p1.ParameterID = 1 AND p2.ParameterID = 2 AND p3.ParameterID = 3
还有其他写查询的方法吗?