2014-03-05 3 views
0

여러 개의 결과 집합이 있고 각각 동일한 개수의 열이 있다고 가정합니다. 하지만 5 개의 결과 세트 또는 10 개의 결과 세트가있을 수 있습니다.다중 결과 집합의 MySQL 제품

이 결과 집합에서 제품을 수행해야합니다. 수학에서 A * B * C * D ... * N

같이 작성해야합니까? SQL 문을 사용하여이를 수행 할 수 있습니까? 내가 자기 조인의 특정 번호를 가지고 있다면 나는 이것을 할 수 있음을 압니다. 내가 데이터, TBL1, TBL2 및 tbl3의 특정 3 개 세트가이 예에서

SELECT tcs1.*, tbl1.*, tbl2.*, tbl3.*, CONCAT(tbl1.actual_id, tbl2.actual_id, tbl3.actual_id) as new_test_case_name 
FROM test_config_sets tcs 
LEFT JOIN test_config_sets tcs1 ON tcs.test_case = tcs1.test_case 
CROSS JOIN (SELECT tcd.actual_id 
    FROM test_config_profiles tcp 
    LEFT JOIN test_config_data tcd ON tcp.id = tcd.profile 
    WHERE tcp.id = 649) as tbl1 
CROSS JOIN (SELECT tcd.actual_id 
    FROM test_config_profiles tcp 
    LEFT JOIN test_config_data tcd ON tcp.id = tcd.profile 
    WHERE tcp.id = 188) as tbl2 
CROSS JOIN (SELECT tcd.actual_id 
    FROM test_config_profiles tcp 
    LEFT JOIN test_config_data tcd ON tcp.id = tcd.profile 
    WHERE tcp.id = 189) as tbl3 
WHERE tcs.test_config_profile = 649 AND tcs1.test_case = 400 
GROUP BY new_test_case_name 
ORDER BY tcs1.test_case ASC, tcs1.sequence ASC; 

처럼 뭔가를 할 수 있습니다. 어떻게 데이터를 N 개 설정해도 결과를 반환 할 정도로 동적으로 확장 할 수 있습니까? CROSS 조인

+0

예! Cross JOIN은 – avisheks

답변

0

는 아래와 같이 사용될 수있다 : 표 예컨대, 2 행 4 행, 5 행,위한 있다면

SELECT tcs.*, tcp.*, tcd.* 
FROM test_config_sets tcs 
CROSS JOIN test_config_profiles tcp 
CROSS JOIN test_config_data tcd 

출력 결과 집합은 2 개 * 4 개 * 5 개 행을 포함 할 것이다. CROSS JOIN에서 테이블의 각 행은 조인 된 다른 테이블의 각 행과 조인됩니다.

+0

tcp를 수행하고 tcd는 수천 또는 수백만 개의 데이터를 포함합니다. 왜 데이터 필터링을 수행해야합니까? SELECT는 test_config_profiles가 tcd.profile LEFT 가입 test_config_data TCD ON tcp.id =을 TCP로부터 을 tcd.actual_id WHERE tcp.id = 동적으로 649 이 같은 데이터의 N 세트를 가질 수 있고, 나는 단지 관심 십자가 것 이 결과 집합에 가입하십시오. – Robin1990

관련 문제