2011-03-20 7 views
2

오늘 아침에 음모를 잃었습니다. 내가하고 싶은MySQL에 "어떻게해야합니까?"가 있습니까?

내 쿼리 ...

SELECT MIN(p.`land_price`) AS `min_price`, 
      MAX(p.`land_price`) AS `max_price`, 
      p.`estate`, 
      m.`file` 

    FROM `properties` AS `p` 
LEFT JOIN `estates` AS `e` 
     ON p.`estate` = e.`title` 

LEFT JOIN `media` AS `m` 
     ON m.`category` = e.`id` 

    WHERE p.`estate` IN ("EstateA", "EstateB") 
     AND p.`land_price` != 0 
GROUP BY p.`estate 

, 그렇지 않으면 단지 빈 열이 존재하는 경우 만 제외 (m로 별칭) media 테이블 name = "Profile"에서 항목을 얻을 수있다 결과 집합에있는 다른 사람들을 위해. 현재 제약 조건을 추가하면 name이있는 부분 만 일치합니다.

현재로서는 제약 조건과 일치하는 media의 첫 번째 항목을 선택하는 중입니다.

올바른 방향으로 나를 가리 키실 수 있습니까?

감사합니다.

답변

6

"WHERE"부분은 기본 테이블 properties의 결과를 제한합니다. 이 경우 두 번째 LEFT JOIN의 "ON"부분에 다른 제약 조건을 추가해야합니다.

예 :

SELECT MIN(p.`land_price`) AS `min_price`, 
      MAX(p.`land_price`) AS `max_price`, 
      p.`estate`, 
      m.`file` 

    FROM `properties` AS `p` 
LEFT JOIN `estates` AS `e` 
     ON p.`estate` = e.`title` 

LEFT JOIN `media` AS `m` 
     ON m.`category` = e.`id` 
     AND m.`name` = 'Profile' 

    WHERE p.`estate` IN ("EstateA", "EstateB") 
     AND p.`land_price` != 0 
GROUP BY p.`estate
+0

감사합니다, 속임수를 썼는지 그. – alex