2012-06-05 56 views
1

我有我的主表,我有2个表将加入。如果员工是男性,我想加入表A,如果员工是女性,我想加入表B.是否有可能做到这一点?加入IF条件?

+0

如何在SQL语句之前使用两个SQL子句和分配逻辑? – Vidul

+1

你真的*想在这里单独的表格,而不是与“性别”列的组合表格? – eggyal

回答

2

如何

SELECT .... 
    FROM main JOIN A ON ... 
    WHERE male 
UNION ALL 
    SELECT .... 
    FROM main JOIN B ON ... 
    WHERE female 
+0

返回: #1222 - 所用的SELECT语句具有不同数量的FROM'列 SELECT *的spells' JOIN'spells_weaken' ON'spells'.'id' ='spells_weaken'.'spell_id' WHERE'咒语'.'type' = 7 UNION ALL SELECT *从'spells'加入'spells_damage'在'spells'.'id' ='spells_damage'.'spell_id'其中'spells'.'type' = 2; – Kryptix

1

,您仍然可以加入两个表,但使用CASE语句来决定要读取哪个表。

SELECT CASE WHEN Table.Field = 'Male' THEN A.Field ELSE B.Field END AS Something 
    FROM Table 
    LEFT JOIN A on condition 
    LEFT JOIN B on condition 
+1

您可能需要LEFT JOIN,因为“男性”记录可能不匹配“错误”连接表中的任何内容。 – Thilo

+0

@Thilo:对。谢谢,更新。 – mellamokb

+0

我并不真正了解如何使用它。我用其他答案查询,你可以修改它来使用你的方法,所以我更理解它吗? ELECT * from spells JOIN spells_weaken ON spells.id = spells_damage.spell_id WHERE spells.type = 2; – Kryptix