2012-11-14 4 views
1

J'ai l'instruction SQL ci-dessous. Qu'est-ce que je voudrais faire est d'inclure une déclaration IF pour couvrir la possibilité de l'une des colonnes retournant un 0 ou un résultat vide, il n'y a pas 0 ID. Dans ce cas, j'essaie de couvrir la possibilité que le résultat magez_cfv_nations renvoie éventuellement un résultat nul ou vide.Utilisation d'une instruction IF dans MySQL

SELECT c.clan_name, n.nation_name, 
    CONCAT(r.rarity_shorthand, " - ", r.rarity_name) AS rarity_text, 
    t.trigger_name, s.skill_name 
FROM `magez_cfv_cards` AS cards 
JOIN `magez_cfv_clans` c ON cards.clan_id = c.clan_id 
JOIN `magez_cfv_nations` n ON cards.nation_id = n.nation_id 
JOIN `magez_cfv_rarity` r ON cards.rarity_id = r.rarity_id 
JOIN `magez_cfv_trigger` t ON cards.trigger_id = t.trigger_id 
JOIN `magez_cfv_skills` s ON cards.skill_id = s.skill_id 
+3

Parlez-vous des jointures à gauche? – danihp

+0

Je suppose que cela ressemblerait à. Aurais-je simplement utiliser 'LEFT JOIN' au lieu de JOIN au-dessus? –

+1

Essayez-le dans les pays rejoindre. – danihp

Répondre

2

Vous avez besoin d'un LEFT JOIN

La gauche JOIN renvoie mots clés toutes les lignes de la table gauche (de table_name1), même s'il n'y a aucune correspondance dans la table droite

Try ce

SELECT c.clan_name, n.nation_name, 
    CONCAT(r.rarity_shorthand, " - ", r.rarity_name) AS rarity_text, 
    t.trigger_name, s.skill_name 
FROM `magez_cfv_cards` AS cards 
JOIN `magez_cfv_clans` c ON cards.clan_id = c.clan_id 
LEFT JOIN `magez_cfv_nations` n ON cards.nation_id = n.nation_id 
JOIN `magez_cfv_rarity` r ON cards.rarity_id = r.rarity_id 
JOIN `magez_cfv_trigger` t ON cards.trigger_id = t.trigger_id 
JOIN `magez_cfv_skills` s ON cards.skill_id = s.skill_id 
1

le fu nction que vous devez utiliser est IIF() et sa syntaxe est

IIF([condition],[if true],[if false])