2012-12-11 2 views
0

두 개의 MySQL 테이블이 있습니다. 한 테이블은 상품 목록이며 다른 테이블은 우승자 목록입니다. 여러 종류의 상을 사용할 수 있습니다.MySQL에 삽입 - IF t1.count (*) <t2.available

상품

  • ID
  • 가능한 이름

승자

  • 이름

가능한 상금의 3이있는 경우을 prize_id, 만 2 우승자는 현재 내가 다음 우승자를 삽입 할 위치, 상 자신의 prize_id로 나열하는 것이 있습니다.

내가이 쿼리 시도 :이 그것을 아래로 자르면

INSERT INTO winner (name, prize_id) 
SELECT 'steve', 1 
FROM winner, prize 
WHERE (select if(count(w.id) < p.available, 1, 0) as `valid` 
     from prize p, winner w 
     where p.id = 1 and w.prize_id = p.id) = 1 

를, 그것은 일종의 작업하지만 prize 테이블에 존재만큼의 행을 삽입합니다

INSERT INTO prize (name, prize_id) 
SELECT 'steve', 1 
FROM winner 
WHERE 1 = 1; 

이 있습니까 이 일을 할 수있는 방법?

답변

1

이 ::

INSERT INTO winner (name, prize_id) 
SELECT tempwinner.name , tempwinner.prize_id 
from 
(Select 
column1, column2 
    FROM winner inner join prize p on (w.prize_id = p.id) 
    WHERE p.id = 1 and count(w.id) < p.available 
) tempwinner 
시도
관련 문제