我想从项目表中选择一个范围,其中包含项目编号列表,如下所示:
id item_no qty date
1 1l500bk 15 2015-03-20
2 1l501bu 10 2015-03-20
3 1l1501ye 5 2015-03-21
4 1l1520bu 5 2015-03-21
5 1l1521bk 1 2015-03-22
我创建了一个包含两个输入字段的表单,要求用户输入 From item number & TO 项目编号,如下所示:
<input type="text" value="" placeholder="From Item Number" name="item1">
<input type="text" value="" placeholder="To Item Number" name="item2">
现在,当我输入 FROM 1l1500 - TO 1l1600 时。它应该输出此范围内的所有值,但它不是!输出不显示任何内容。但是,如果我输入 1l1500bk 到 1l1521bk,它只会显示 1 个输出 ( 1l1500bk ) ?!
这是页面提交后的PHP代码:
$query = "SELECT *,SUM(qty) from s_{$value} WHERE item_no BETWEEN '".$_POST['item1']."' AND '".$_POST['item2']."'";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
echo "<tr><td align=center width=19%>{$value}</td><td align=center width=19%>{$row['item_no']}</td><td align=center>{$row['qty']}</td><td align=center>{$row['date']}</td></tr>";
}
我希望这对你们有意义,我似乎找不到问题所在!谢谢
感谢@Waleed艾哈迈德的帮助我的问题的解决方案只是将id分组如下:
$query = "SELECT *,SUM(qty) from s_{$value} WHERE item_no BETWEEN '".$_POST['item1']."' AND '".$_POST['item2']."'" GROUP BY id;
加:如果要进行部分文本搜索
$length = max(strlen($_POST['item1']), strlen($_POST['item2']));
$query = "SELECT *,SUM(qty) from s_{$value} WHERE SUBSTRING(item_no, 1, ".$length.") BETWEEN '".$_POST['item1']."' AND '".$_POST['item2']."'" GROUP BY id;
即使您不键入整个项目编号,也会输出此数据。
根据这个查询,它将只显示一个结果作为输出。要使用此处的聚合函数(sum(qty)),您必须使用"分组依据"一词来显示所有结果。例如
未测试,希望它会起作用
$query = "SELECT *,SUM(qty) from s_{$value} WHERE item_no BETWEEN '".$_POST['item1']."' AND '".$_POST['item2']."'" GROUP BY id;