对不起,朋友们,我想问一下。我有4个db表。
桌位
表type_member
表事务处理
表history_member
如上所示的表格内容示例。如果表格的内容像上面的照片。如何找出总交易类型_Member“银”是怎样的?因为,例如,如果我使用查询select*from loket join transaction on loket.id=transaction.loket_id where loket.type_member_id=2
将loket表与事务连接起来,那么结果必须为空,因为在transaction表中假定没有事务来自成员类型为silver的loket。即使你看看历史,它应该是在2021-04-30。
因为在2021-04-30 loket rahmat,成员的类型仍然是银。但在2021-05-01年,loket rahmat从银变成了金。请求帮助的朋友,如何正确的查询,这样的结果,我知道哪些是来自银会员类型的交易,哪些是来自黄金。事先谢谢你
这个查询应该会给出您想要的结果。它通过将transactions
表left join
连接到history_member
表来计算每个事务的适当type_member_id
,只选择事务之前(或当天)的最新更改。如果成员类型没有更改,则使用原始值(来自loket
):
SELECT COALESCE(h.to_member, l.type_member_id) AS member_type, SUM(price) AS transactions
FROM loket l
JOIN transaction t ON t.loket_id = l.id
LEFT JOIN history_member h ON h.loket_id = l.id AND h.create <= t.create
WHERE NOT EXISTS (SELECT * FROM history_member h2 WHERE h2.loket_id = l.id AND h2.create <= t.create AND h2.create > h.create)
GROUP BY member_type
HAVING member_type = 2
输出(用于示例数据):
member_type transactions
2 1000
dbfiddle演示
问题内容: SQL2008。 我有一个测试表: 我用10k测试行填充它。 我运行以下两个查询: 我不知道为什么这两个查询有不同的执行计划。 查询1确实针对UQ_Sale_RowVersion索引进行索引搜索。 查询2对PK_Sale进行索引扫描。 我想查询2做索引查找。 我将不胜感激。 谢谢你。 [编辑] 尝试使用datetime2而不是rowversion。同样的问题。 我也尝试强制使用索引(查
我对SQL不是很友好,所以我需要在一个表上编写一个SQL UPDATE/DELETE查询。要求如下。 表A: 1 Code1 价值1 8 2 代码2 价值2 2 4 代码3 价值3 8
问题内容: 有一个表,如: 有没有一种方法可以计算相同月份/不同年份的值之间的差,因此得到的结果为: 我试图做类似的事情: 但输出为选择a(2012)的12个月*选择b(2011)的12个月。 编辑:抱歉,缺少重要信息: 通过odbc:jdbc桥对Excel工作表进行查询。 因为“ from”子句始终是这样的:[sheet1 $]我无法创建任何联接或case :( 问题答案: 您的查询无效,因为您
我为每个日期创建了多个表来存储每个日期的一些信息。例如历史3108、历史0109..所有这些表共享相同的模式。有时候,我需要查询多个表,获取记录的行数和计数。在oracle和SQL Server中,最快的方法是什么? 目前我正在这样做。。。 当我需要多个表的计数时:为每个表选择计数(*),然后添加 当我需要多个表的记录时:从表1中选择*,从表2中选择*(基本上为每个表选择*) 如果我们在一个事务中
问题内容: 我有一个接受查询,通过SQL服务器运行它,检查错误并返回结果的类。如何对该课程进行单元测试? 编辑 :我将尝试更精确: 负责将查询传递到服务器。为了测试它是否确实这样做,抛出正确的异常等,我想将其连接到将要填充的模拟数据库。我的问题是- 怎么做?如何创建一个模拟“服务器”来处理呼叫? 问题答案: 只需传递一个SQL查询,然后将返回的结果与预期的结果进行比较即可。简单的。JUnit是一个
我应该用什么来替换'code TO VERIFY IF QUERY RESULT ROW IS=1'? 我用num_rows尝试了很多种方法,但都行不通。 我的PHP代码: