2012-12-11 3 views
0

У меня есть две таблицы MySQL. Одна таблица - это список призов, а другая таблица - список победителей. Доступно несколько видов приза.Вставить в MySQL - IF t1.count (*) <t2.available

приз

  • идентификатор
  • имя
  • доступны

победитель

  • имя
  • prize_id

Если есть 3 приза доступны, и только 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 
Смежные вопросы