我是SQL新手,目前不知道要搜索的正确单词。
我有第一张这样的桌子——它有5行。
SELECT
tFinal2.region, COUNT(newsfeed_id) AS comment
FROM
(SELECT *
FROM
((SELECT *
FROM public.newsfeed_comment) AS T1
INNER JOIN
(SELECT * FROM public.newsfeed) AS T2 ON T1.newsfeed_id = T2.seq) AS tFinal1) AS tFinal2
GROUP BY
tFinal2.region
这是我的第二张桌子:
SELECT tFinal2.region, COUNT(newsfeed_id) AS media
FROM
(SELECT *
FROM
((SELECT *
FROM public.newsfeed_media) AS T1
INNER JOIN
(SELECT * FROM public.newsfeed) AS T2 T1.newsfeed_id = T2.seq) AS tFinal1) AS tFinal2
GROUP BY
tFinal2.region
第二个表有6行。
因此,如果我简单地使用内部联接、外部联接等方式联接表#1中的5行和表#2中的6行,它将只返回5行。
我如何加入,以便它将返回所有行,并为缺少的值设置默认值为零?(我也不知道哪个表的行数更多。它可能会时不时地改变,我无法进行左、右连接)。
使用left join and coalesce()函数将缺少的值替换为0
select tFinal2.region, coalesce(count(newsfeed_id),0) as comment from (
select * from (
(SELECT *
FROM public.newsfeed_comment) as T1
left join
(SELECT * from public.newsfeed) as T2
on T1.newsfeed_id = T2.seq) as tFinal1
) as tFinal2
group by tFinal2.region
我想你想要:
select nf.region, coalesce(sum(num_comments), 0) as num_comments,
coalesce(sum(num_media), 0) as num_media
from public.newsfeed nf left join
(select c.newsfeed_id, count(*) as num_comments
from public.newsfeed_comment c
group by c.newsfeed_id
) c
on nf.seq = c.newsfeed_id left join
(select m.newsfeed_id, count(*) as num_media
from public.newsfeed_media m
group by m.newsfeed_id
) m
on nf.seq = m.newsfeed_id
group by nf.region;
笔记:
NULL
值,请使用coalesce()
(选择*from…)
子查询。这些只是更难写和读。在某些数据库中,它们可能会影响性能
问题内容: 我有两个实体类Category和Events。我需要连接两个表并获取与给定条件匹配的所有记录 我的SQL查询 我怎样才能将此SQL查询转换为hql并获取数据? 我在下面尝试了但没有得到结果?hibernate很新 用于hibernate映射的事件实体类 类别实体 提取类别方法 问题答案: 使用ORM工具时,您需要考虑Java对象。 根据您的问题,我认为您要编写的查询看起来像: 使用OR
问题内容: 好的,我试图查看每个供应商提供了多少个产品(“产品”和“供应商”为单独的表格)。我希望将结果与公司名称和公司提供的产品数量一起显示。我不确定该如何设置。 到目前为止,我有: 我不确定如何使每个公司的ProductName计数。如果您能为我提供任何帮助,我将不胜感激。 问题答案: 您所缺少的只是GROUP BY子句: 使用LEFT {OUTER} JOIN意味着如果某些供应商不提供任何产
我需要连接来自两个不同表的数据,如下所示。仅使用一个sql查询就可以做到这一点吗?如果“key”和“name”在两个表上,那么它们是相同的。表1中的“状态”始终为“-”,表2中的“T”。此外,两个表上的“名称”和“comp”都匹配(例如:Name3-C和Name4-B)<我尝试过“联合”和“加入”,但还没有解决办法! 表1 表2 结果应该是。。。 提前谢谢!
问题内容: 我有具有相同结构的不同表,我想通过它们的一列将它们连接起来。 问题在于他们不共享该列中的信息。 结果表: (在单列中) 到目前为止,我已经尝试过: 我知道我的查询是错误的,因为我要调用更多我想要的列,但是我不确定如何将所有列合并到一个列中。我该怎么做? 问题答案: 你有没有尝试过? 如果您不想排除重复的值,则可能要使用。 要限制结果集,您可以执行以下操作:
问题内容: 我执行选择以获取表的结构。我想获取有关列的信息,例如其名称,是否为null或是否为主键。 但是对于默认值,我得到的是id ..类似454545454的东西,但是我想得到的值是“ xxxx”。要搜索的表是什么,或者将该ID转换为值的函数是什么。谢谢 问题答案: 您可以执行此操作(只需执行SELECT *,这样您就可以看到所有可用信息): 结果集中包括“ COLUMN_DEFAULT”列。
问题内容: 我有一个模型如下: 我也有上述模型的模型形式,如下所示: 我想知道如何为该坦克隐藏字段设置默认值。这是我到目前为止显示/保存表格的功能: 问题答案: 你有两个选择,可以在调用表单构造函数时填充值: 或在表单定义中设置值: