我对编码相当陌生,并且通过我自己的兴趣,我尝试为工作创建一个数据库系统,并且随着我的进展非常多地学习。Mysql查询代码改进
我有一个数据库查询,它旨在显示Sample Name
,Tank Name
和Customer
匹配的最近结果。这些来自三个不同但相关的表格。
我想出了以下查询。 这个查询工作,但为了我自己的教育,我沿着正确的路线工作,还是有更好的方法来解决这个问题(这看起来很不整洁,很难在我的脑海里读到)?
SELECT
`t_workorders`.`Work Order`,
`t_workorders`.`Date Sampled`,
`Result`,
`t_test_units`.`Unit`
FROM
`t_sampletests`
RIGHT JOIN `t_samples`
ON `Sample` = `pk_Sample`
RIGHT JOIN `t_workorders`
ON `t_samples`.`Work Order` = `t_workorders`.`Work Order`
LEFT JOIN `t_test_units`
ON `t_sampletests`.`Unit` = `t_test_units`.`pk_Unit`
WHERE `t_sampletests`.`Test` =
(SELECT
`Test`
FROM
`t_sampletests`
WHERE `pk_SampleTest` = $ testID)
AND `t_Samples`.`Sample Name` =
(SELECT
`Sample Name`
FROM
`t_sampletests`
LEFT JOIN `t_Samples`
ON `Sample` = `pk_Sample`
WHERE `pk_SampleTest` = $ testID)
AND `t_Samples`.`Tank` =
(SELECT
`Tank`
FROM
`t_sampletests`
LEFT JOIN `t_Samples`
ON `Sample` = `pk_Sample`
WHERE `pk_SampleTest` = $ testID)
AND `t_workorders`.`Customer` =
(SELECT
`Customer`
FROM
`t_sampletests`
LEFT JOIN `t_Samples`
ON `Sample` = `pk_Sample`
LEFT JOIN `t_workorders`
ON `t_Samples`.`Work Order` = `t_workorders`.`Work Order`
WHERE `pk_SampleTest` = $ testID)
AND `t_workorders`.`Work Order` <>
(SELECT
`t_workorders`.`Work Order`
FROM
`t_sampletests`
LEFT JOIN `t_Samples`
ON `Sample` = `pk_Sample`
LEFT JOIN `t_workorders`
ON `t_Samples`.`Work Order` = `t_workorders`.`Work Order`
WHERE `pk_SampleTest` = $ testID)
ORDER BY `t_workorders`.`Work Order` DESC
LIMIT 15
任何建议的替代或更合适的方法将不胜感激。
非常感谢
任何问题,这个查询? –
如何格式化它以便可以轻松读取它。使用新的线和增量..? – John
我建议不要使用像这样的权利加入 't_workorders ..这将包括来自t_workorders的所有字段 –