2009-02-06 4 views
2

작성한 UNION of 2 select 문에 대한보기를 작성하려고합니다. 개별적으로MySql :보기로 실행될 때 UNION이 실행되지 않습니다.

실행될 때

노조 잘 작동하지만 문제는 내가보기로 실행하고 때 실행지고있는 UNION의 첫 번째 부분입니다. 내가 사용하고

쿼리는 위의 i가 별도로 실행할 때 잘 작동

SELECT DISTINCT products.pid AS id, 
       products.pname AS name, 
       products.p_desc AS description, 
       products.p_uid AS userid, 
       products.p_loc AS location, 
       products.isaproduct AS whatisit 
      FROM products 
UNION 

SELECT DISTINCT services.s_id AS id, 
       services.s_name AS name, 
       services.s_desc AS description, 
       services.s_uid AS userid, 
       services.s_location AS location, 
       services.isaservice AS whatisit 
      FROM services 
      WHERE services.s_name 

다음과 같다. 그러나 뷰로 사용하면 서비스 부분의 결과를 얻지 못합니다.

누군가 나를 도와 줄 수 있습니까?

+0

중복 : http://stackoverflow.com/questions/514817/creating-mysql-view-using-union/514823#514823 – Learning

+0

어떻게 이러한 테이블이 서로 관련이 있습니까? –

+0

비슷한 문제가 있습니다. 'products' 테이블에서 하나의 행을 지우면 뷰에 SELECT가 남아 있지만 UNION 만 실행하면 안됩니다 : S –

답변

0

당신의 필드 userid와 위치가 두 개의 서로 다른 데이터 유형의 경우 두 개의 선택에서 서로 바뀌 었다고 생각하십시오. 오류가 발생하면 오류가 발생합니다. 잘못된 결과가 표시됩니다.

+0

그게 내가 사용하는 방법이지만 여기에 입력하는 동안 실수를했습니다 .. 아직도 작동하지 않습니다 –

0

위의 개별 쿼리에 대한 결과 집합을 제공 한 다음 UNION 쿼리에 대한 결과 집합을 제공 할 수 있다면 질문에 대한 더 나은 답변을 제공 할 수 있습니다. 내 직감은 두 번째 쿼리가 중복 값을 반환 할 수 있으며 UNION을 사용하므로 중복이 제거된다는 것입니다. UNION ALL을 사용하면 모든 중복 행이 리턴됩니다.

1 name1 description1 10 Home Y 
2 name2 description2 20 Work Y 

돌려 두 번째 행 : 첫 번째 쿼리가 행을 반환하는 경우 예를 들어,

1 name1 description1 10 Home Y 

결과 출력은 다음과 같습니다

1 name1 description1 10 Home Y 
2 name2 description2 20 Work Y 

당신이 모두를 원하는 경우 반환 된 행 :

1 name1 description1 10 Home Y 
2 name2 description2 20 Work Y 
1 name1 description1 10 Home Y 

그런 다음 UNION 문 대신 UNION ALL을 사용합니다.

관련 문제