Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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查询用于提取;1“;从「;1-A“的&引用;1-B“和”;,某一专栏的文章等_Mysql_Vb6 - Fatal编程技术网

mysql查询用于提取;1“;从「;1-A“的&引用;1-B“和”;,某一专栏的文章等

mysql查询用于提取;1“;从「;1-A“的&引用;1-B“和”;,某一专栏的文章等,mysql,vb6,Mysql,Vb6,我有一个具有以下结构的表: +---------+------------+ | TableNo | ItemName | +---------+------------+ | 1 | X | | 2 | Y | | 1 | Z | | 1-A | A | | 2-A | B | +---------+------------+ 以下是我当前使用的查询

我有一个具有以下结构的表:

+---------+------------+ | TableNo | ItemName | +---------+------------+ | 1 | X | | 2 | Y | | 1 | Z | | 1-A | A | | 2-A | B | +---------+------------+ 以下是我当前使用的查询,它为我提供表
1
2
3
等的报告,但不包括
1-A
1-B
,包括表
1

strSQL = "select TableNo,Outlet,ItemName,id, Quantity, Value,
@i:= IF(Outlet = @last_outlet and TableNo = @last_tableno, @i + 1, 1) as result, 
@last_outlet := Outlet,@last_tableno := TableNo from (SELECT  @i := 0, 
@last_outlet := NULL, @last_tableno := NULL) h 
JOIN (SELECT Outlet, TableNo,ItemName, id, SUM(Quantity) AS Quantity,
SUM(Value) as Value From browsekot WHERE TableNo in " & list1_values
& " and Outlet = '" & rest.Text & "' and 
Date between '" & Format(DTPicker1.Value, "yyyy-mm-dd") 
& " ' And '" & Format(DTPicker2.Value, "yyyy-mm-dd") 
& "' GROUP BY ItemName,Outlet,TableNo ORDER BY Outlet,TableNo) i"

有没有办法通过修改上面的查询来实现这一点?

如果记录1-a、1-B等被映射到整数1、2、…,那么表的结构为什么会是这样,这是相当不清楚的。。。无论如何

你考虑过增加一列吗

如果设置为以这种方式执行,则可以使用以下命令从TableNo中提取适当的值:

正如eggyal在注释中提到的,这将把TableNo转换成一个无符号整数,直到遇到第一个非数字字符为止


当然,您必须将其调整到代码中,但这是将文本转换为可用格式的基本方法。

考虑到您已经尽力简化了表格和问题描述(例如,通过删除其他列,例如
Outlet
id
quantity
Value
,您是否也可以努力简化查询?实际上,由于一个简单的
转换(表号为UNSIGNED),您不必为
INSTR()
等而烦恼
将生成从所有十进制字符到第一个非十进制字符的整数。啊,我不知道。我只有SQL Server要测试,所以我使用
CHARINDEX()
而不是
INSTR()
尝试将“1-A”强制转换为INT会引发错误。使用@eggyal-谢谢!@eggyal的简化更新了我的答案,我为没有简化查询表示歉意。好的,所以我需要的是,如果我使用下面的查询,比如:select*from browsekot where TableNo=
1
我应该得到项目X、Z、A。如果这可以直接通过que完成否则,我将按照作者的建议选择另一个专栏@msnider@user3092228您可以这样做:
SELECT*FROM browsekot WHERE CAST(TableNo as UNSIGNED)=1
strSQL = "select TableNo,Outlet,ItemName,id, Quantity, Value,
@i:= IF(Outlet = @last_outlet and TableNo = @last_tableno, @i + 1, 1) as result, 
@last_outlet := Outlet,@last_tableno := TableNo from (SELECT  @i := 0, 
@last_outlet := NULL, @last_tableno := NULL) h 
JOIN (SELECT Outlet, TableNo,ItemName, id, SUM(Quantity) AS Quantity,
SUM(Value) as Value From browsekot WHERE TableNo in " & list1_values
& " and Outlet = '" & rest.Text & "' and 
Date between '" & Format(DTPicker1.Value, "yyyy-mm-dd") 
& " ' And '" & Format(DTPicker2.Value, "yyyy-mm-dd") 
& "' GROUP BY ItemName,Outlet,TableNo ORDER BY Outlet,TableNo) i"
SELECT CAST(TableNo as UNSIGNED)