2009-12-10 3 views
0

'user_id', 'name'및 'multiplier'와 함께 'users'테이블이 있다고합시다. 나는 기본 선택을 할 경우일부 열 값에 따라 행을 복제합니까?

, 나는 각 사용자에 대해 하나 개의 행을 얻을 : 내가 지금하고 싶은 무엇

SELECT * FROM users 

는 각 사용자에 대해 mutiplier 행을 얻을 수 있습니다. 그래서 만약 내가 좀하고 싶습니다 어떻게 그 가치

(1, 'user1', 1) 
(2, 'user2', 6) 

가 선택 내 테이블에 두 사용자가 나에게 7 행 (1 개 사용자 1 및 6 ×의 사용자 2)

내가 실현을 반환하는 말 이것은 클라이언트 측에서는 매우 쉽지만, 이것은 훨씬 더 큰 질의의 일부가 될 것이고 클라이언트에서 영향을받는 수천 개의 행을 보내서 증식하고 정렬 할 수있는 여지가 없습니다. 다음에 그걸로 ...

도움을 줄 수있는 사람 덕분에

답변

1

나는 당신이하려고하는 것보다 더 깔끔한 방법이 있기 때문에 해결하려고하는 전체를 게시하는 것이 훨씬 더 좋을 것이라고 생각하지만 아래 코드는 필요한 것. 여기에 숫자 표를 사용합니다. 테이블 변수 또는 영구 테이블 또는 임시 테이블로 만들 수 있지만 아이디어는 동일하게 유지됩니다.

SELECT 
    U.user_id, 
    U.name, 
    U.multiplier 
FROM 
    Users AS U 
INNER JOIN Numbers AS N ON 
    N.number BETWEEN 1 AND U.multiplier 
+0

"나는 당신이 게시하는 것이 훨씬 낫다고 생각합니다. 당신이하려고하는 것보다 더 깔끔한 방법이 있기 때문에 당신이 해결하려고 노력하고있는 것의 전체 ".... 많은 개발자들은 자신들의 '문제'를 만들어 자신의 어려움을 유발하는 나쁜 습관을 가지고 있습니다. –

0

임시 테이블로 할 수 있습니까? 클라이언트 측의 올바른 행 수를 사용하여 users 테이블의 복사본을 만든 다음 큰 긴 쿼리를 users 테이블 대신 해당 테이블에 조인하십시오.

관련 문제