2015-02-16 3 views
-1

Хорошо, нужна помощь!Tricky MySQL с несколькими таблицами

стол округляет

id|blobs|total 

табличные данные

id|roundid|score 

Есть 18 ролей в таблице данных, с roundid, связанной с идентификатором таблицы раундов.

Я пытаюсь сделать что-то вроде этого:

update rounds set blobs=count(*) where score=-1 
update rounds set total = sum(score) where score != -1 

В принципе найти запрос для вызова общего количества, где оценка = -1, а общее, где оценка = -1, относящихся к этому раунду!.

Возможно, или мне нужно просматривать каждый раунд?

ответ

1

Получить необходимые значения с подзапросом:

UPDATE `rounds` r 
INNER JOIN (
    SELECT d.roundid, 
     SUM(CASE WHEN d.score = -1 THEN 1 ELSE 0 END) AS blobs, 
     SUM(CASE WHEN d.score != -1 THEN d.score ELSE 0 END) AS total 
    FROM `data` d 
    GROUP BY d.roundid 
) T1 on (T1.roundid = r.id) 
SET r.blobs = T1.blobs, 
    r.total = T1.total 
+0

Закрыть, но не уверен, что это будет делать. Количество blobs - это только те, где score = -1, а сумма - это сумма этих строк, которая равна -1. –

+0

Извините, пропустил разницу, я обновил запрос – arnoudhgz

+0

Сделал трюк - блестящий. –

Смежные вопросы