gpt4 book ai didi

php - 对表 1 返回 ID 的查询,表 2 包含评级,如何通过在 Just 1 查询中加入表 1 和表 2 来获得 SUM 评级?

转载 作者:太空宇宙 更新时间:2023-11-03 12:11:43 24 4
gpt4 key购买 nike

给出这些表:

Table1asID mID aType rID sNo1    2   11    212 14    2   8     242 14    2   7     241 13    2   11    547 22    2   3     567 24    2   2     577 26    3   11    785 11    3   6     735 1table2asID rating1    11    -13    13    13    14    1

注意:

在表 1 中:

  • rID 是唯一的。
  • (mID, sNo) 组合是唯一的。假设这些组合中的每一个都创建了一个 block 。
  • 每个 block 都有 1 个且只有 1 个 aType=11。每个 block 不能包含 2 个 aType=11
  • asID 可以在 block 中重复。例如,4 在 block 1 中重复 2 次 (mID=2 & sNo=1)

在表 2 中:

  • 评分可以是 1 或 -1
  • asID可以重复多次。

所以,假设用户输入aType=11,那么在Table1中我们可以拉出

Query1mID aType rID sNo2   11    212 12   11    547 23   11    785 1

所以在搜索 aType=11 之后我们会知道 3 个 block :

-第 1 block (mID=2,sNo=1)

-第 2 block (mID=2,sNo=2)

-第 3 block (mID=3,sNo=1)

但是,查询 1 缺少评级信息的总和。我需要为查询 1 中的每个 block 获得一些评级。

-Chunk 1 具有唯一的 asID 1 和 4(注意:4 重复 2 次)。 block 1 在表 2 中应该有 rating = 1 cos 的总和,1 的 asID 是 +1 & -1 & 4 的 asID 是 +1。

所以用户搜索 aType=11 时的最终查询如下所示:

Query1mID aType rID sNo sumOfRating2   11    212 1   12   11    547 2   43   11    785 1   0

我们可以在 1 个查询中实现吗?

查询 1:select mID, aType, rID, sNo from table1 where aType=11 那么我们应该如何修改该查询,以便我们可以将评级总和包含到最终表中?

我正在使用 MYSQL 5.0

最佳答案

您有一个选择是使用相关子查询:

select mid, atype, rid, sno,
(
select sum(t2.rating)
from table2 t2
join (
select distinct asid, mid, sno
from table1
) t11 on t2.asId = t11.asId
where t1.mid = t11.mid and t1.sno = t11.sno
) sumofrating
from table1 t1
where atype = 11;

关键是您必须使用子查询来获取不同的 asid/mid/sno 组合(这样您就不会计算 4 的评级两次)。

关于php - 对表 1 返回 ID 的查询,表 2 包含评级,如何通过在 Just 1 查询中加入表 1 和表 2 来获得 SUM 评级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23946807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com