2010-03-08 39 views
1

我不是SQL太好,我知道可能有一个更有效的方式来完成我在这里做什么,所以任何帮助将是非常赞赏。预先感谢您的意见!搞清楚找哪个字段的值与SQL和Perl

我正在为当地的学校高中写一个短期课程。在这所学校,有驾驶执照和汽车的青年和老年人可以选择开车上学,而不是坐公车。每个驱动程序只分配一个空间,并将它们的DLN用作驱动程序表的主键。汽车的品牌,型号和颜色存储在独立的汽车表格中,与车牌号码字段中的司机表相关。

我的想法是对程序所在的学校秘书可以键入谁/什么她寻找,并拉起结果列表的主界面单一的搜索框。事情是,她可以输入车牌号码,车牌颜色,品牌和型号,某人的驾驶员姓名,某个学生驾驶员的DLN或空格号码。作为程序员,我不知道到底是什么她寻找的,所以几个选项浮现在脑海中,我为建设肯定我检查到处匹配:

1)大跳情侣

SELECT * FROM [tablename] 

SQL语句,每表一个表并将结果塞入到程序中的数组中,然后使用正则表达式一次搜索数组中的一个元素,查找与搜索词相似的匹配模式,如果找到一个,将其中匹配的整个记录​​添加到结果数组中以在搜索结束时显示在屏幕上。

2)采取任何她寻找到程序的缩放,并准备在其周围多个SELECT语句,如

SELECT * FROM DRIVERS WHERE DLN = $Search_Variable 
    SELECT * FROM DRIVERS WHERE First_Name = $Search_Variable 
    SELECT * FROM CARS WHERE LICENSE = $Search_Variable 

等为每个表的每个属性,结果扎进一个结果数组在搜索完成后显示在屏幕上。

有一个更清洁的方式去了解这个查询,而不必让她指定正是她寻找的对象?可能是某种我以前从未见过的SQL语句?

回答

1

首先,你应该不是使用SELECT *,你应该肯定使用bind values

其次,要弄清楚什么用户正在寻找最简单的方法是要求用户。有一组复选框喜欢这样:

Search among: [ ] Names 
       [ ] License Plate Numbers 
       [ ] Driver's License Numbers

或者,你可以注意到,名称中不包含任何数字,我还没有看到它包含数字的任何驾驶执照号码。还有其他启发式可以用来部分推断用户试图搜索的内容。

如果你做了一个呈现结果的好工作,这可能会解决。

最后,试着弄清楚您正在使用的数据库提供了哪些搜索可能性,并利用它们,以便在用户界面触及数据之前进行大部分搜索。