MySql加入3个表格,其中两个表格加入,然后是第三个表格
问题描述:
我有3个表格我想加入。 VM,DS和TPMySql加入3个表格,其中两个表格加入,然后是第三个表格
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并打印到:
`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小时。
正在尝试做什么?
答
您的INNER JOIN正在将结果从8703扩展到30,000 - 因为在vm中每个数据存储都有可能存在多个ds数据存储名。
您是否尝试过GROUP BY vm.id?
您需要的结果应该是什么样子? – r0xette
您的INNER JOIN将结果从8703扩展到30,000 - 因为'vm'中的每个'datastore'在'ds'中可能有多个'DatastoreName'。你尝试过'GROUP BY ds.DatastoreName'吗? – Fredster
请参阅http://meta.*.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查询 – Strawberry