2013-01-18 3 views
0

는 나는이 시도 .. 다른 열 1 기본적으로이 서로 다른 테이블에서 2 개 쿼리를 할 노력하고있어 :다른 컬럼을 가진 mysql 쿼리 2 테이블?

SELECT * FROM $TIMES_TABLE WHERE uid='$contextUser' AND submitstatus=1 UNION SELECT first_name, last_name, employid, manager FROM $USER_TABLE WHERE username='$contextUser' 

을하지만 난이 오류를 얻을 :

Can't perform query: The used SELECT statements have a different number of columns 

그렇게하지를 알다. 누군가 도와주세요

감사합니다.

답변

0

쿼리는 결과 집합의 열 수 및 각 열의 데이터 유형으로 "정의"하는 결과 집합을 리턴한다.

UNION 또는 UNION ALL 연산은 두 결과 집합을 "추가"하도록 설계되었습니다. 이 작업을 수행하려면 두 쿼리의 결과 집합이 반환되는 열 수의 관점에서 동일해야하며 각 열의 데이터 형식도 동일해야합니다.

경우에 따라 결과 집합이 조금으로 꺼져있을 때, 우리는 결과 집합 일치 (열 자리와 같은 일부 리터럴 추가)

SELECT 'u'     AS source 
    , u.first_name  AS first_name 
    , u.last_name   AS last_name 
    , u.employid   AS employid 
    , u.manager   AS manager 
    FROM $USER_TABLE u 
WHERE u.username='$contextUser' 
UNION ALL 
SELECT 't'     AS source 
    , t.some_string  AS first_name 
    , t.some_otherstring AS last_name 
    , 0     AS employid 
    , 0     AS manager 
    FROM $TIMES_TABLE t 
WHERE t.uid='$contextUser' 
    AND t.submitstatus=1 

참고의 이름을 만들기 위해 쿼리를 조금 꾸며 낼 수 있습니다 열 (또는 열 또는 표현식에 할당 된 별칭)은 중요하지 않습니다. 여기서 중요한 것은 두 쿼리는 다섯 개의 열, 각 열 위치 일치의 데이터 유형 반환이다 :, VARCHAR, VARCHAR, VARCHAR, INT를


SQL 문을 개발 INT

, 그것은 무슨 일 결과 집합을 정의하는 것이 중요합니다 반환 될 각 열의 개수 및 데이터 유형

"UNION"또는 "UNION ALL"연산을 사용하는 쿼리를 만들 때 각 쿼리의 결과 집합이 일치해야합니다.

0

쿼리 결과의 모든 행에는 동일한 열이 있어야합니다. 이 두 쿼리에는 동일한 열이 없으므로 UNION을 사용하여 결합 할 수 없습니다.

두 개의 별도 쿼리로이 작업을 수행해야합니다.

2

노동 조합 (UNION과 UNION ALL)은 UNION'd되는 모든 쿼리가있을 것을 요구 :

  1. 열 데이터 형식은 각 위치에서 일치해야 SELECT 절에 같은 수의 열

질문하기 전에 stackoverflow에서 검색하십시오.

는 참조 : The used SELECT statements have a different number of columns (REDUX!!)

+0

나는 이미 stackoverflow에서 검색을했는데, 내가 이해하지 못했던 유사한 예제를 많이 보았고, 왜 내가 도움을 요청하는지. 죄송합니다! – rubberchicken

관련 문제