MySql Присоединиться к сумме - PullRequest
       15

MySql Присоединиться к сумме

0 голосов
/ 25 сентября 2010

У меня есть таблица RESULTS с такой структурой:

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

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

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

И я хочу показать каждую строку из таблицы РЕЗУЛЬТАТЫ и для каждого результата я хочу вычислить totalBet и Sum_won, используя значения из таблицы TICKETS

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

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

Ответы [ 2 ]

1 голос
/ 25 сентября 2010

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

   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

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

0 голосов
/ 25 сентября 2010
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 одновременно.

...