나는 코딩에 새로운 지식을 갖고 있으며 작업을위한 데이터베이스 시스템을 만들고 많은 학습을 시도하고있다.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의 모든 필드를 포함한다. –