2012-12-14 91 views
1

我想为网站开发一个搜索页面,但不能拿出一个查询。php mysql在十个表格+不同列上构建一个搜索查询

这里是那些十张桌子的名单和他们的田地

  1. tmp_auction_auto

    ID订单类别制造商型号价格价格类型位置一年运行run_type门安全气囊齿轮发动机马力气缸DRIVETYPE燃料颜色ABS electronicwindows climatcontrol盘孵化板计算机警报右转涡轮停车控制空调leathersalon导航centrallock chairwarm液压noprice租金交换customclearance状态其他联系

  2. tmp_auction_estate ID订单类型交易价格价格类型price_sqm noprice城市地址区域的高度维修条件的项目目标土地阳台阁楼会议stairs_total楼梯间卧室阳台sanitary_arr阳台壁炉机车库land_destination建筑distance_central_street distance_tbilisi库房按摩浴缸的浴室淋浴桑拿家具技术电话互联网发电机池商业中心吃了网络库存wardobe电梯天然气热水对讲机有线电视报警系统入口安全门卫安全双工三层卫星厨房橱窗land_railway land_electricity land_gas land_water land_drainage状态其他联系

  3. tmp_auction_other ID顺序标题价格价格类型noprice信息联系

  4. tmp_branch ID郎标题内容XY
  5. tmp_comments ID reply_id路径名电子邮件标题内容喜欢的不喜欢的时间管理
  6. tmp_news id lang title content date

  7. tmp_pages ID郎标题内容日期

  8. tmp_polls ID名称问题答案的ip

  9. tmp_presentation ID郎标题为了

  10. tmp_sitemap ID父郎标题链接为了

我知道我可以写为每个表的多个查询的任何命令(糟糕的做法),然后将其合并到一个PHP数组的输出,但我宁愿需要一个专业的方法,这个主题。

P.S.我不希望使用内存缓存,Solr的,sphinxs和这样的库(服务器将不支持那些)

  • 我也将喜欢的内容搜索等(网站写在MVC模式的PHP等SEACH建议与URL重写,并依靠mysql数据库虽然)
+0

哦......因为你的数据库是非常难看逐列来说(名为“标题”,“姓名”等),你将主要有写一个巨大的选择(UNION ALL-ISH)就像这里回答:http://stackoverflow.com/questions/6574564/php-mysql-search-multiple-tables-using-a-keyword - 请注意,这个选择是表演杀人呃并且可以很容易地被利用到你的数据库。 – Najzero

回答

1
I guess you can join these tables and create a view into which the data obtained fom the joined tables can be saved. Now the search must be conducted on this view which will speed up the search. 
For eg. 
mysql> SELECT CONCAT(UPPER(supplier_name), ' ', supplier_address) FROM suppliers; 
+-----------------------------------------------------+ 
| CONCAT(UPPER(supplier_name), ' ', supplier_address) | 
+-----------------------------------------------------+ 
| MICROSOFT 1 Microsoft Way       | 
| APPLE, INC. 1 Infinate Loop       | 
| EASYTECH 100 Beltway Drive       | 
| WILDTECH 100 Hard Drive        | 
| HEWLETT PACKARD 100 Printer Expressway    | 
+-----------------------------------------------------+ 
CREATE VIEW suppformat AS 
SELECT CONCAT(UPPER(supplier_name), ' ', supplier_address) FROM suppliers; 

mysql> SELECT * FROM suppformat; 
+-----------------------------------------------------+ 
| CONCAT(UPPER(supplier_name), ' ', supplier_address) | 
+-----------------------------------------------------+ 
| MICROSOFT 1 Microsoft Way       | 
| APPLE, INC. 1 Infinate Loop       | 
| EASYTECH 100 Beltway Drive       | 
| WILDTECH 100 Hard Drive        | 
| HEWLETT PACKARD 100 Printer Expressway    | 
+-----------------------------------------------------+ 


Please check this link which will give you some idea of views 
[http://www.techotopia.com/index.php/An_Introduction_to_MySQL_Views][1] 


    [1]: http://www.techotopia.com/index.php/An_Introduction_to_MySQL_Views