2010-09-25 2 views
0

У меня есть таблица с именем Результаты с этой структурой:MySql Регистрация с Sum

resultid, победитель, тип

И таблица под названием БИЛЕТЫ с этой структурой:

resultid, TicketID, ставки, sum_won статус

и я хочу, чтобы показать каждую строку из таблицы результатов и каждый результат я хочу вычислить totalBet и Sum_won, используя значения из таблицы БИЛЕТОВ

Я попытался сделать несколько объединений, некоторые суммы, но я не могу получить то, что хочу.

SELECT *,COALESCE(SUM(tickets.bet),0) AS totalbets, 
     COALESCE(SUM(tickets.sum_won),0) AS totalwins 
FROM `results` NATURAL JOIN `tickets` 
WHERE tickets.status<>0 
GROUP BY resultid 

Пожалуйста, дайте мне несколько советов.

я хочу показать что-то вроде этого

RESULT WINNER TOTALBETS TOTALWINS 
1  2  431  222 
2  3   0   0 
3  1   23  0 
4  1   324  111 
+0

Не могли бы вы привести некоторые данные примера и ожидаемый результат для этих данных? Думаю, это сделает ваш вопрос более ясным. –

+0

Это может также помочь опубликовать 'show create table results \ G' и' show create table tickets \ G'. Что такое 'raceid'? – unutbu

+0

Я имел в виду результат ... – NVG

ответ

1

Использование:

SELECT r.*, 
      COALESCE(x.totalbet, 0) AS totalbet, 
      COALESCE(x.totalwins, 0) AS totalwins 
    FROM RESULTS r 
LEFT JOIN (SELECT t.resultid, 
        SUM(t.bet) AS totalbet, 
        SUM(t.sum_won) AS totalwins 
      FROM TICKETS t 
      WHERE t.status != 0 
     GROUP BY t.resultid) x ON x.resultid = r.resultid 

Я не заботиться о естественном JOIN синтаксис, предпочитая быть четко о том, как JOIN таблицы/ссылку вместе ,

+0

Спасибо миллион! РАБОТАЕТ, как шарм !!! – NVG

0
SELECT *, COALESCE(SUM(tickets.bet),0) AS totalbets, 
     COALESCE(SUM(tickets.sum_won),0) AS totalwins 
FROM `results` NATURAL JOIN `tickets` 
WHERE tickets.status<>0 
GROUP BY resultid 

Попробуйте заменить первый * с resultid. Если это поможет, добавьте дополнительные столбцы в SELECT и добавьте их в GROUP BY одновременно.

+0

не работает ... если у меня нет билетов на этот результат, то он не возвращается 0 – NVG