是否有人可以就解决我遇到的这个问题提出建议。我用MSSQL运行PHP 5.3。只是为了解释发生了什么以及我需要做什么......
用户从主页上的表中选择特定的运行(行)。表中的列是:
用户可以通过单击report = yes中报告列中的单元格来选择行。此数据将发布到下一页。下一页允许用户更改开始和结束英里/码数据,以便他们可以查看该运行的特定部分。
例如,用户已在主页上选择查看从开始英里/码565.1211到结束英里/码593.4321的数据。用户可以通过键入两个文本框来更改要查看的部分。一个框是“起始英里/码”,第二个框是“结束英里/码”。因此,用户可以键入“起始英里/码”文本框570.2345和“结束英里/码”580.6543。我想要发生的是查询用户输入的数据......
SELECT id, CAST(mile AS varchar(6)) + '.' + CAST(yard AS varchar(6)) AS Mile, gps_lat, gps_long, rotten, split, broken, quality
FROM table
WHERE mile/yard BETWEEN start mile ??? AND end mile ???
ORDER BY Mile
我的问题是,当用户输入英里/码(580.6543)的组合时,如何从我的数据库中查询此信息?我假设我将不得不将数据分成英里和码头(我将如何做到这一点)...还如何检索信息?按英里搜索很简单(例如,在BETWEEN 570和580之间的英里),但我如何同时按码和英里搜索?
不幸的是,我无法改变数据库结构,因为这是我必须要处理的事情......如果有人能想到一个更好的方式来做我正在做的事情......我全都耳朵!< / p>
我知道这是一个很长的问题,所以任何不清楚的地方,请告诉我!
干杯,
尼尔
答案 0 :(得分:0)
您不应该将这些里程/码数转换为varchars。你失去了将它们作为数字进行比较的能力,这就是它们的开始。
将用户的英里/码数值转换为数字,然后与数据库中的数字进行比较。
你试图强迫苹果和葡萄成为橘子,并将它们与梨和李子进行比较......可以说,所有东西都是菠萝,可以这么说。
此外,通过执行强制转换+连接,您将失去任何可能在这些字段上放置索引的机会。如果您的表变得“大”,您将通过强制每个查询的全表扫描来消除性能。
答案 1 :(得分:0)
正如Marc B所说,我试图强迫苹果和葡萄成为橘子,并将它们与梨和李子进行比较......可以说,所有东西都是菠萝。我现在改变了我的脚本结构。
干杯,
尼尔