2010-09-25 4 views
0

J'ai une table appelée résultats avec cette structure:MySql Joignez-vous à Somme

identifiant de résultats, gagnant, le type

Et une table appelée TICKETS avec cette structure:

identifiant de résultats, TicketID, pari, sum_won , le statut

et je veux montrer chaque ligne de résultats de la table et pour chaque résultat que je veux calculer le totalBet et Sum_won en utilisant les valeurs de la table BILLETS

J'ai essayé de faire quelques jointures, quelques sommes, mais je ne peux pas obtenir ce que je veux.

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 

Veuillez me donner quelques conseils.

Je veux afficher quelque chose comme ça

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

Pourriez-vous donner des exemples de données et le résultat attendu pour ces données? Je pense que cela rendrait votre question plus claire. –

+0

Il pourrait aussi être utile d'afficher 'show create table results \ G' et' show create table tickets \ G'. Qu'est-ce que 'raceid'? – unutbu

+0

Je voulais dire résultid ... – NVG

Répondre

1

Utilisation:

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 

Je ne me soucie pas de la syntaxe NATURAL JOIN, préférant être explicite sur la façon de JOIN/tables de liaison ensemble .

+0

Merci un million !!! TRAVAILLÉ comme un charme !!! – 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 

Essayez de remplacer le premier * avec resultid. Si cela vous aide, ajoutez d'autres colonnes à SELECT et ajoutez-les au GROUP BY en même temps.

+0

ne fonctionne pas ... si je n'ai pas de billets joués pour ce resultid, alors il ne retourne pas 0 – NVG