2013-03-06 4 views
1

MySQL에서 유창한 사람이 도움이되기를 바랍니다. select에 select를 수행하려고하는데, 쿼리가 완료되기를 원하지 않는 것 같습니다. 어떤 도움이라도 대단히 감사하겠습니다.단일 쿼리에서 다중 선택

SELECT 
    product as pid, 
    leg_name as name, 
    dimensions as dims 
FROM 
    pmaint 
WHERE 
    product in (
     SELECT product 
     FROM qb_export_items_attributes 
     WHERE attribute_name = 'Z' 
     AND product in (
       SELECT product 
       FROM pmainT 
       WHERE type_ID = (
         SELECT ID 
         FROM type 
         WHERE SOFTCARTCATEGORY = 'End Table Legs' 
        ) 
       ) 
     AND attribute_value <= 3.5 
    ) 
+1

1) "완료하지 않으시겠습니까?" 2) 어떻게 작동 시키려고 했습니까? (예를 들어 각각의 개인이 선택을 시도해 하나가 깨 졌는지 확인해 보셨습니까?) –

+3

서브 쿼리와 조인이 아닌 이유는 무엇입니까? –

+2

@AndrewMcGivery 만약 내가 커피를 마시고 있었다면, 나는 내 화면 전체에 그것을 내뱉었을 것이다. – Phil

답변

1

봅니다 INNER 대신

UPD IN 서브 쿼리의 JOIN을 사용하는 : 나는 당신이 의견을 따라이 쿼리를 수정했습니다. 첫 번째 JOIN 부질의는 모두 product이고 두 속성이 모두 존재하고 참입니다.

SELECT 
    pmaint.product as pid, 
    pmaint.leg_name as name, 
    pmaint.dimensions as dims 
FROM 
    pmaint 
JOIN (select product from qb_export_items_attributes 
     where ((attribute_name = 'Z') and (attribute_value <= 3.5)) 
      OR 
      ((attribute_name = 'top_square') and (attribute_value >= 4)) 
     GROUP BY product HAVING COUNT(*)=2 
    ) 

     t1 on (pmaint.product=t1.product) 
JOIN type on (pmaint.type_ID=type.ID) 
WHERE 
     type.SOFTCARTCATEGORY = 'End Table Legs' 
+0

Valex, 놀랍습니다! 그건 완벽하게 작동합니다! –

+0

Valex, 다른 하나의 구성 요소를 추가하는 것을 잊어 버렸습니다. 당신이 이것을 도울 수 있기를 바랍니다. t1.attribute_name = 'Z'이면 t1.attribute_value <= 3.5입니다. t1.attribute_name = 'top_square'이면 t1.attribute_value> = 4 단일 제품 ID가 표시 되려면이 두 조건이 모두 true 여야합니다. t1의 데이터는 다음과 같습니다. '제품 | attribute_name | attribute_value 1 | Z | 3.5 1 | top_square | 3 2 | Z | 2 2 | top_square | 5 3 | Z | 5 3 | top_square | 4' Z <= 3.5 및 top_square> = 4이기 때문에 제품 ID 2와 일치해야합니다. 회신에 감사드립니다. –

+0

줄 바꿈으로 바꾸십시오. 그런 다음 데이터가 표 형식으로보다 적합하게 보입니다. - PRODUCT | attribute_name | attribute_value - 1 | Z | 3.5 - 1 | top_square | 3 - 2 | Z | 2 - 2 | top_square | 5 - 3 | Z | 5 - 3 | top_square | 4 - Z <= 3.5 및 top_square> = 4이므로 제품 ID 2와 일치해야합니다. –

관련 문제