永发信息网

mysql数据库实现全站搜索(3张表)

答案:2  悬赏:70  手机版
解决时间 2021-11-28 17:00
  • 提问者网友:人生佛魔见
  • 2021-11-28 11:05
mysql数据库实现全站搜索(3张表)
最佳答案
  • 五星知识达人网友:鱼芗
  • 2021-11-28 11:21
为什么不用三条sql分别搜索呢,这样搜出来的结果你知道是从哪个表出来的。如果你要用一条sql只能使用union了,类似这样:
select id, name from tablename1 where id=1union select id, title as name from tablename2 where id=1unionselect id, name from tablename3 where id=1
要注意,各select搜索的字段名必须数量和名称都相同,不相同的用as改名相同的
如果这样的话建议在各表中加一个字段,来区分这条记录来自哪个表追问因为我用的php框架的原因,我本来也是想3张表分别查询然后合并起来, 但是在我用的PHP框架下暂时还没找到实现的办法,我就想问下能否用一条数据库语句实现分别查询3张表,
我想要的结果是
显示所有 ID = 比如是 11的数据追答你的三个表结构是什么样的,里面有哪些字段想被查出来,发出来让大家帮你看看追问物品表
ID GoodsCode ....
人员表
ID MemberCode ....
仓库表
ID RoomCode ....
现在的搜索条件就是 输入一个 code 能够查询到对应的 ID 但是这个ID 不是表的自增列 ID
也就是说 物品ID 人员ID 仓库 ID 3张表是在另外一张大表中对应的自增ID,这张大表有所有物品 ,人员 ,仓库的ID追答SELECT `id` FROM `goodtable` WHERe `GoodsCode` = ‘".$code."’
union SELECt `id` FROM `membertable` WHERe `MemberCode` = ‘".$code."’
union SELECt `id` FROM `roomtable` WHERe `RoomCode` = ‘".$code."’
全部回答
  • 1楼网友:山有枢
  • 2021-11-28 11:47
首先:
1:物品编号 2:人员编号 3:仓库编号 肯定都是数字或者字符串字母的组合

当然要实现这个功能也需要配合数据库的设计

每个编号再设计(写入字段的时候做好分类)的时候添加前缀(例:物品编号:wu113565324; 人员编号:ren113565324; 仓库编号:cang113565324)

$b_id = $_POST['编号'] OR $_GET['编号'];
SELECt * FROM `表名` WHERe `物品编号`=$b_id OR `人员编号`=$b_id OR `仓库编号`=$b_id;追问编号都是纯数字,但是现在问题是 人员表 物品表 仓库表 没有关联而且 各自有一张自己的表编号都是纯数字,但是现在问题是 人员表 物品表 仓库表 没有关联而且 各自有一张自己的表追答那这个就比较麻烦了~ 关联不关联倒是无所谓!

现在可以这样做给用户一个选择的类型:

让用户选择他要查询的是哪个信息:做个下拉菜单!根据选择直接select相应表就可以了!

这个最简单而且最有效!追问下路菜单已经有对应的3张表的单独的查询,但是现在还需要一个类似关键字查询功能就是说
下拉菜单不只要有单独的查询,还要有一个3张表所有的记录的查询,现在在我的php框架里面暂时还没有找到如何把记录联合起来的方法,所有我就想问下在sql语句中能否实现
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯