我想加入3张桌子。 vm,ds和tp
vm与ds连接 ds与tp
连接我只想与下面的原始查询匹配,返回8703并返回其他表中的一行,所以我最终得到了8703行。
`SELECT *
FROM vm
WHERE date = (SELECT max(date) from vm)`
这会按预期返回8703个结果。
然后我想使用上面的表并将其与另一个表连接以检索更多值。
`SELECT *
FROM ds
WHERE date = (SELECT max(date) from ds)`
我想加入以上两个:
INNER JOIN ds ON vm.datastore = ds.DatastoreName
`SELECT *
FROM tp
WHERE date = (SELECT max(date) from tp)`
我想加入表ds和tp:
`INNER JOIN tp ON ds.uid = tp.uid`
我尝试了以下但是它返回30,000千行,我只想要上面的8703。
`SELECT *
FROM vm
INNER JOIN ds ON vm.datastore = ds.DatastoreName
INNER JOIN tp ON ds.uid = tp.uid
WHERE vm.date = (SELECT MAX(date) from vm)
AND ds.date = (SELECT MAX(date) from ds)
AND tp.date = (SELECT MAX(date) from tp)`
在过去的8小时里,我也尝试了上述的许多版本。
我正在尝试做什么?
答案 0 :(得分:0)
您的INNER JOIN正在扩展结果 - 从8703扩展到30,000 - 因为在vm中每个数据存储可能有多个ds中的DatastoreName。
您是否尝试过GROUP BY vm.id?