MYSQL à 0, même si les résultats n'existent pas
J'ai une base de données MySql avec 2 tables:
countries
results
- Pays et
id
et uncountry name
. - Résultats est un
country_id
, unvalue
et undate
. - Tous les pays ont des résultats sur chaque date.
Comment puis-je créer une requête qui répertorie tous les pays avec leurs propres résultat, mais encore d'en faire la liste et affiche 0 si il n'y a pas de résultat sur le tableau des résultats?
Ou simplement de les combiner en un seul tableau, avec des valeurs null pour les pays qui n'ont pas de valeur ou la date.
OriginalL'auteur Jon | 2011-03-02
Vous devez vous connecter pour publier un commentaire.
Utiliser une GAUCHE de la JOINTURE entre les deux tables
À 0 (pour la
value
colonne) si il n'y a pas de résultat, utilisez IFNULL.Vous mettez une clause where à la fin, comme la 4ème ligne.
Salut, j'ai essayé ce code ---- SÉLECTIONNEZ r.statistique r.type c.id, c.nom, IFNULL(r.valeur, 0), r.date_from DE dt_countries c LEFT JOIN résultats de r sur r.pays = c.id de la COMMANDE PAR le bureau de statistique, le type, le nom ---- mais quelques-uns des "statistiques" valeurs ne sont accompagnés de tous les pays. je n'ai pas mentionner il y a 3 champs de plus sur le tableau des résultats, vous ne savez pas si cela fait une diff.
Veuillez élaboré par l'édition de la question et de mettre quelques exemples de lignes de données et la production prévue pour ce type de données.
OriginalL'auteur RichardTheKiwi
ce que vous cherchez est appelé
LEFT JOIN
. jetez un oeil à cette page ou demander à google pour un exemple facile. pour plus d'informations, jetez un oeil à la documentation de mysql:OriginalL'auteur oezi
Avec la requête suivante vous permettra de récupérer tous les pays ayant affecté les résultats.
Si il n'y a pas de valeurs attribuées à certains pays, il y aura
null
les valeurs et selon eux, vous savez que vous devriez montrer0
.OriginalL'auteur hsz
Si vous voulez prendre en compte toutes les dates qui sont stockées dans la
results
de table et de faire la liste de tous les pays et pour toutes ces dates, en remplacement deresults.value
avec0
en conséquence, alors vous pourriez probablement besoin de faire quelque chose comme ceci:OriginalL'auteur Andriy M