내가 필요한 결과를 얻을 수는 없지만 서브 쿼리에 조인하려고합니다. 누군가 실행할 수있는 더 나은 쿼리를 제안하거나 하위 쿼리를 사용해서는 안됩니다 (SQL의 변형에 정통하지는 않습니다). 더 나은 쿼리 유형이 실행됩니까?서브 쿼리에 대한 MySQL 조인
제한된 SQL 지식으로 하위 쿼리가 최상의 위치에 있지 않음을 알 수 있습니다. 여기서 목표는 tblResults의 필드를 쿼리하고 동일한 resultid
(동일한 resultid
값을 갖는 tblTraceOutput에 여러 행이 있으므로 마지막 행만) 인 tblTraceOutput의 마지막 행에 조인하는 것입니다.
SELECT r.`resultid`, r.`successful`, r.`result`, r.`testdate`, r.`changed`,
t.`delay1`, t.`delay2`, t.`delay3`
FROM `tblResults` AS r
JOIN (
SELECT `resultid`, `delay1`, `delay2`, `delay3`
FROM `tblTraceOutput`
WHERE `traceid`='48'
ORDER BY `outputid` DESC LIMIT 0,1
) AS t ON (t.`resultid` = r.`resultid`)
WHERE r.`traceid` = '48' ORDER BY r.`resultid` DESC LIMIT 0,20
내가 JOIN
LEFT JOIN
A와 나는 다시 내 쿼리하지만 첫 번째을 제외하고 모든 행에 t.delay1
, t.delay2
및 t.delay3
, 의 세 개의 열 작성 'NULL'로 더 많은 결과를 얻을 것이다 변경하는 경우. 하위 쿼리에서 가져온 결과는 tblResults의 기본 쿼리 출력의 첫 번째 행에만 연결됩니다. 외부 쿼리에서 출력의 모든 행에 대해이 하위 쿼리를 실행하고 조인 할 수 있습니까? 내 머리에서
나는 다음과 같은 상상,하지만 난 그게 어떤 방식으로 작동 할 수 없습니다 :
SELECT r.`resultid`, r.`successful`, r.`result`, r.`testdate`, r.`changed`
FROM `tblResults` AS r
(
SELECT t.`resultid`, t.`delay1`, t.`delay2`, t.`delay3`
FROM `tblTraceOutput`
WHERE `traceid`='48'
ORDER BY `outputid` DESC LIMIT 0,1
) AS t
JOIN ON (t.`resultid` = r.`resultid`)
WHERE r.`traceid` = '48' ORDER BY r.`resultid` DESC LIMIT 0,20
우수 감사합니다. 오늘 새로운 것을 가르쳐 주셨습니다. 나는 나의 필요에 사소한 변경을 할 수 있고 완벽하다. 나는 두 번째 테이블을 그 자체에 결합시키는이 아이디어를 좋아한다! 고마워요. D – jwbensley
당신은'도움이 돼서 기쁩니다. –