Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在单列中使用多列结果联接表_Mysql_Sql_Database_Join_Conditional Statements - Fatal编程技术网

Mysql 在单列中使用多列结果联接表

Mysql 在单列中使用多列结果联接表,mysql,sql,database,join,conditional-statements,Mysql,Sql,Database,Join,Conditional Statements,我有两张桌子 国家表 id name 1 Nepal 2 India 工资表 id Countryid termid amount 1 1 1 100 1 1 2 500 3 2 1 200 4 2 2 400 我想要结果 CountryName basicSalary allowance Nepal 100 500 Indi

我有两张桌子 国家表

id name 
1  Nepal
2  India
工资表

id  Countryid termid amount
1    1         1      100
1    1         2      500
3    2         1      200
4    2         2      400
我想要结果

CountryName basicSalary  allowance
Nepal       100          500
India       200          400
这里第1项是基本工资,第2项是津贴,只需加入表格两次(使用别名)

只需连接表两次(使用别名)


您可以尝试下面的查询

SELECT c.name, 
    SUM(CASE WHEN s.termid = 1 THEN amount ELSE 0 END) basicSalary, 
    SUM(CASE WHEN s.termid = 2 THEN amount ELSE 0 END) allowance 
FROM Country c
JOIN Salary s on c.id = s.Countryid
GROUP BY c.name;

希望这对您有所帮助。

您可以尝试下面的查询

SELECT c.name, 
    SUM(CASE WHEN s.termid = 1 THEN amount ELSE 0 END) basicSalary, 
    SUM(CASE WHEN s.termid = 2 THEN amount ELSE 0 END) allowance 
FROM Country c
JOIN Salary s on c.id = s.Countryid
GROUP BY c.name;

希望这对您有所帮助。

是否将
term
只有1和2?是的,term有1和2@viki888加入薪资表两次,或者进行分组。在这种情况下,我如何进行此操作@jarlh@manoj,请看下面Viki888的答案。可能是最好的方法,将
term
只有1和2吗?是的,term有1和2@viki888加入工资表两次,或者进行分组。在这种情况下,我怎么做@jarlh@manoj,请看下面Viki888的答案。也许这是最好的方法,