Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
Mysql SQL查询--未返回正确的数据_Mysql_Sql_Sql Server 2008 - Fatal编程技术网

Mysql SQL查询--未返回正确的数据

Mysql SQL查询--未返回正确的数据,mysql,sql,sql-server-2008,Mysql,Sql,Sql Server 2008,在我的查询中,我需要为搜索返回不同的字段。但是,即使没有信息,txt_注释字段也会返回信息 SELECT DISTINCT T_ORDER_DETAIL.TXT_ORDER_NUMBER, T_ORDER_DETAIL.CUSTOMER_PRODUCT_ID, T_VENDOR.VENDOR_ID, T_CUSTOMER_ACCOUNT.CUSTOMER_ID,

在我的查询中,我需要为搜索返回不同的字段。但是,即使没有信息,txt_注释字段也会返回信息

SELECT DISTINCT T_ORDER_DETAIL.TXT_ORDER_NUMBER, 
                T_ORDER_DETAIL.CUSTOMER_PRODUCT_ID, 
                T_VENDOR.VENDOR_ID, 
                T_CUSTOMER_ACCOUNT.CUSTOMER_ID, 
                T_EMPLOYEE.TXT_EMAIL, 
                T_ORDER_ASSIGNMENT.TXT_NOTE 
FROM   T_VENDOR_EMPLOYEE 
       INNER JOIN T_VENDOR WITH(nolock) 
               ON T_VENDOR_EMPLOYEE.VENDOR_ID = T_VENDOR.VENDOR_ID 
       INNER JOIN T_CUSTOMER_ACCOUNT WITH(nolock) 
                  INNER JOIN T_ORDER_DETAIL WITH(nolock) 
                             INNER JOIN T_CUSTOMER_PRODUCT WITH(nolock) 
                                     ON T_ORDER_DETAIL.CUSTOMER_PRODUCT_ID = 
                                        T_CUSTOMER_PRODUCT.CUSTOMER_PRODUCT_ID 
                          ON T_CUSTOMER_ACCOUNT.CUSTOMER_ACCOUNT_ID = 
                             T_CUSTOMER_PRODUCT.CUSTOMER_ACCOUNT_ID 
               ON T_VENDOR_EMPLOYEE.VENDOR_EMPLOYEE_ID = 
                  T_ORDER_DETAIL.VENDOR_EMPLOYEE_ID 
       INNER JOIN T_EMPLOYEE WITH(nolock) 
               ON T_VENDOR_EMPLOYEE.EMPLOYEE_ID = T_EMPLOYEE.EMPLOYEE_ID 
       INNER JOIN T_ORDER_DETAIL_REJECTION_REASON WITH(nolock) 
               ON T_ORDER_DETAIL.ORDER_DETAIL_ID = 
                  T_ORDER_DETAIL_REJECTION_REASON.ORDER_DETAIL_ID 
       INNER JOIN T_ORDER_ASSIGNMENT WITH(nolock) 
               ON T_VENDOR_EMPLOYEE.VENDOR_EMPLOYEE_ID = 
                  T_ORDER_ASSIGNMENT.VENDOR_EMPLOYEE_ID 
WHERE  T_ORDER_ASSIGNMENT.INT_ACCEPTED = 4 
       AND T_ORDER_ASSIGNMENT.TXT_NOTE <> '' 
只有一个txt_实际上没有离开办公室,其余的都是空白

非常感谢您的帮助


谢谢

您的t\u订单\u分配表列订单\u详细信息\u ID?如果是,将其添加到上次联接中的ON条件中

我将尝试简化查询,从尽可能少的内部联接开始。即:

SELECT * 
FROM t_Vendor_Employee 
INNER JOIN t_Order_Assignment ON t_Vendor_Employee.vendor_employee_id = t_Order_Assignment.vendor_employee_id 
WHERE t_Order_Assignment.int_Accepted = 4 and t_Order_Assignment.txt_Note <> '' 
如果这得到了预期的结果,添加更多的内部联接,直到得到错误-然后查看数据,看看是否可以确定原因

另外,您是否知道使用WITH NOLOCK可能会导致丢失提交的行


可能是这样一种情况,即数据没有做您认为它正在做的事情。返回t_Vendor_Employee.Vendor_Employee_ID列,然后在t_Order_赋值中查找该值,以确保数据正确。另外,除非你有很好的理由,否则不要使用nolock。我按照你的建议做了,只有一个作业有办公室外的文本,其余的没有。我还必须使用无锁,因为很多人必须一次访问数据库。谢谢你的回复。你为什么要同时标记sql server和mysql?我很确定nolock没有像你想象的那样做。你希望看到那些没有消息的订单的空白消息吗?您的WHERE子句特别排除了它们,因此您可能会遇到一些问题。另外,您加入了t_Order_Detail_Rejection_Reason,但对其不做任何处理-您是否希望所有行都有一个拒绝,这就是含义?我建议您使用表别名来缩短语句的可读性。如果您有足够的控制权,我也会去掉t_uu表和其他前缀,它们毫无价值。为什么int_Accepted是4?你有四个接受级别?t_是因为我们有几个表分配,t_代表info table NOT ask。我将这些表连接起来,看起来它们什么都没做,因为它们需要搜索表以找到相邻的int说明符。我排除了没有拒绝原因的项目,因为这意味着项目不会被拒绝。公司政策禁止使用别名“对不起”。t_Order_Assignment.int_Accepted有4个级别:保留、接受、拒绝和撤回。谢谢+1-同意。至少,他没有足够的“唯一性”列用于获取不同订单的不同消息。
SELECT * 
FROM t_Vendor_Employee 
INNER JOIN t_Order_Assignment ON t_Vendor_Employee.vendor_employee_id = t_Order_Assignment.vendor_employee_id 
WHERE t_Order_Assignment.int_Accepted = 4 and t_Order_Assignment.txt_Note <> ''