Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
SQL:SQL查询以获取相应的数据_Sql_Postgresql - Fatal编程技术网

SQL:SQL查询以获取相应的数据

SQL:SQL查询以获取相应的数据,sql,postgresql,Sql,Postgresql,所以,问题是我需要找到国籍为“美国”的人收到的礼物总数,现在我有两个不同的表,分别名为gift\u info和users\u info,users\u info表包含国籍属性,而gift\u info包含gift\u id属性 我想出了类似的办法 SELECT users_info.user_id, gift_info.gift_id, users_info.nationality FROM gift_info LEFT JOIN users_info ON gift_info.gift_id

所以,问题是我需要找到国籍为“美国”的人收到的礼物总数,现在我有两个不同的表,分别名为gift\u infousers\u info,users\u info表包含国籍属性,而gift\u info包含gift\u id属性

我想出了类似的办法

SELECT users_info.user_id, gift_info.gift_id, users_info.nationality
FROM gift_info
LEFT JOIN users_info
ON  gift_info.gift_id = users_info.user_id
where users_info.nationality = 'America'

此查询提供的输出是用户id、礼物id和国籍“America”,而我需要“America”国籍的人收到的礼物总数。

修改SELECT语句以计算礼物id的数量并添加GROUP by子句:

SELECT COUNT(DISTINCT gift_info.gift_id)
FROM gift_info
LEFT JOIN users_info
ON  gift_info.user_id= users_info.user_id    
where users_info.nationality = 'America'
GROUP BY users_info.nationality = 'America'

根据@Sujitmohanty30的评论编辑WHERE子句

如果我理解正确,我想您需要:

SELECT COUNT(*)
FROM gift_info gi JOIN
     users_info ui
     ON gi.user_id = ui.user_id
WHERE ui.nationality = 'America';
注:

  • 外部联接不合适,因为您需要国籍
  • 表别名使查询更易于编写和读取
  • 我认为一个简单的
    COUNT(*)
    就足以得到给出的数量。如果需要人数,请使用
    COUNT(DISTINCT ui.user\u id)

这是礼品信息上的
条件吗?礼品id=users\u info.user\u id
正确吗?现在我想起来了,它没有意义,谢谢你指出!