2011-07-27 5 views
0

Ceci est probablement vraiment facile, mais j'ai des problèmes avec cela. J'ai posé une question plus tôt (MySql Query help) à propos d'une requête et la réponse était de créer une autre table et de la joindre à ma requête actuelle. Je crée donc une table temporaire et je la rejoins avec ma requête, mais j'obtiens les mêmes résultats.mysql joindre la question

Vue d'ensemble: J'ai dates tables avec les dates des 30 derniers jours et une valeur de 0 pour chaque entrée

+------+------------+ 
| Zero | Date  | 
+------+------------+ 
| 0 | 2011-07-27 | 
| 0 | 2011-07-26 | 
| 0 | 2011-07-25 | 
| 0 | 2011-07-24 | 
| 0 | 2011-07-23 | 
| 0 | 2011-07-22 | 
...etc 

Et je suis en train de se joindre à cette table avec une requête que je fais une autre table qui obtient ces résultats:

+-------------------+-----------+ 
| Past-Month-Builds | Month-Day | 
+-------------------+-----------+ 
|    53 | 6-27  | 
|    103 | 6-28  | 
|    91 | 6-29  | 
|    70 | 6-30  | 
|    76 | 7-1  | 
|     8 | 7-2  | 
|    77 | 7-5  | 
|    111 | 7-6  | 
|    67 | 7-7  | 
|    70 | 7-8  | 
|     2 | 7-9  | 
|     3 | 7-10  | 
|    87 | 7-11  | 
|    53 | 7-12  | 
|    49 | 7-13  | 
|    84 | 7-14  | 
|    126 | 7-15  | 
|     3 | 7-16  | 
|     8 | 7-17  | 
|    98 | 7-18  | 
|    114 | 7-19  | 
|    841 | 7-20  | 
|    206 | 7-21  | 
|    738 | 7-22  | 
|     2 | 7-23  | 
|    65 | 7-25  | 
|    39 | 7-26  | 
|    21 | 7-27  | 
+-------------------+-----------+ 

Notez qu'il ya des jours manquants, je voudrais que le mois-Past builds Col pour afficher 0 quand il n'y avait pas de builds ce jour-là.

Voici la requête que je suis en train d'utiliser:

SELECT 
    COUNT(id) AS 'Past-Month-Builds', 
    CONCAT(MONTH(builds.submittime), '-', DAY(builds.submittime)) as 'Month-Day' 
FROM builds 
    RIGHT JOIN dates ON DATE(builds.submittime) = dates.Date 
WHERE DATE(builds.submittime) >= DATE_SUB(CURDATE(), INTERVAL 30 day) 
GROUP BY MONTH(submittime), DAY(submittime); 

Kinda a perdu, toute aide serait grande Merci.

Répondre

1

Modifiez la requête afin que dates soit la table principale et utilisez un left outer join à la table builds.

De même, déplacez tous les critères liés à la table builds de la clause WHERE à la clause ON car il s'agit de la table facultative.

+0

Wow, merci. Juste après que j'ai soumis ceci j'ai regardé la question encore et était comme ... Pourquoi est-ce que je fais une bonne inscription ... Merci –