Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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
帮助诊断bizzare MySQL查询行为_Mysql - Fatal编程技术网

帮助诊断bizzare MySQL查询行为

帮助诊断bizzare MySQL查询行为,mysql,Mysql,我有一个非常具体的查询正在运行,我需要任何帮助来调试它 此查询涉及4个表 交易类型 事务处理ID(主) 交易金额 交易类型 交易 事务处理ID(主) 时间戳 购买 事务\u ID 项目编号 项目 项目标识 客户识别码 假设有一个交易,其中某人支付20美元现金和0美元信用卡,并在表中插入两行 //row 1 Transaction_ID: 1 Transaction_amount: 20.00 Transaction_type: cash //row 2 Transaction_ID: 1 Tra

我有一个非常具体的查询正在运行,我需要任何帮助来调试它

此查询涉及4个表

交易类型
事务处理ID(主)
交易金额
交易类型

交易
事务处理ID(主)
时间戳

购买
事务\u ID
项目编号

项目
项目标识
客户识别码

假设有一个交易,其中某人支付20美元现金和0美元信用卡,并在表中插入两行

//row 1
Transaction_ID: 1
Transaction_amount: 20.00
Transaction_type: cash
//row 2
Transaction_ID: 1
Transaction_amount: 0.00
Transaction_type: credit
具体查询如下:

SELECT 
 tt.Transaction_Amount, tt.Transaction_ID
FROM 
 ItemTracker_dbo.Transaction_Type tt
JOIN 
 ItemTracker_dbo.Transaction t
   ON
 tt.Transaction_ID = t.Transaction_ID
JOIN
 ItemTracker_dbo.Purchase p
   ON
 p.Transaction_ID = tt.Transaction_ID
JOIN
 ItemTracker_dbo.Item i
   ON
 i.Item_ID = p.Item_ID
WHERE
 t.TimeStamp >= "2010-01-06 00:00:00" AND t.TimeStamp <= "2010-01-06 23:59:59"
   AND
 tt.Transaction_Format IN ('cash', 'credit')
   AND
 i.Client_ID = 3
选择
电汇交易金额,电汇交易ID
从…起
ItemTracker\u dbo.Transaction\u类型tt
参加
ItemTracker_dbo.t事务
在…上
tt.Transaction\u ID=t.Transaction\u ID
参加
ItemTracker_dbo.Purchase p
在…上
p、 事务\u ID=tt.Transaction\u ID
参加
ItemTracker_dbo.Item i
在…上
i、 项目标识=p.项目标识
哪里

t、 时间戳>=“2010-01-06 00:00:00”和t.TimeStamp我们需要查看所有表中的所有数据,才能知道问题所在。然而,由于连接是问题所在,这是因为您认为其中一个表只有一行时,其中一个表有两行。

您的模式有问题。您的行具有相同的事务id,这是主键。我认为它们不能在数据库中被标记为主要的。如果两行id相同,则可能会导致意外的额外行从联接返回。

您需要发布更多信息。首先,如果你从查询中得到4行结果,你认为不正确的结果会很有帮助。这是一个典型的“选择不中断”(问题):HA。有趣的阅读。如果我的问题是我在责怪SELECT,我道歉。99.99999999%的时间是程序员。他希望返回两行。这4行是困扰他的。当然主键必须是唯一的,否则它们不是键。我认为这里的答案暗示他没有正确的表配置,可能没有配置构成主键的列,因此他有重复项。重复和联接将很容易为您提供两倍于预期的行数。谢谢-购买表中有重复的事务ID行。应该是这样的。我只需要想出一种不同的方法来选择客户ID