mysql多表查询的问题
问题描述
产品分类表:prolei产品信息表:pro
前提知道某分类lei的值,他对应着分类表(prolei)中的category_id.现在需要,通过lei搜索分类表(prolei)中的category_id的记录,然后用搜索结果去产品表(pro)中搜索所有的记录,对应着产品表中的字体goods_id。
这个怎么写?
问题解答
回答1:以后想让人快速清晰地看懂问题,麻烦贴一下DDL语句,加上清晰简洁的问题描述,谢谢。
一次查询:
SELECT b.* FROM prolei AS a, pro AS bWHERE a.category_id = b.goods_idAND a.lei = ?
但建议分开2次查询,尤其是互联网应用这种并发量比较大的场景应尽量避免联表查询:
SELECT category_id FROM proleiWHERE lei = ?;SELECT * FROM proWHERE goods_id IN (...) #在代码里把SQL1的结果填进去回答2:
不太明白你说的意思,能把2个表的字段写一下么,prolei表的哪个字段和pro表的哪个字段关联?你看看是这个意思么:
select p.* from prolei pl, pro p where pl.goods_id = p.goods_id and pl.category_id = {lei}回答3:
不知道你所说的使用分类表中的结果是一个什么样的结果,我暂定为某一个字段数据结果作条件吧,如下子查询
SELECT `字段1`,`字段2`,`字段3` FROM `pro` WHERE `goods_id` IN (SELECT `某字段` FROM `prolei` WHERE `category_id`={$lei})
不过考虑到你时要对产品表做操作,产品表的数据应该很大,不推荐你用子查询。你可以先把分类表中的数据查询出来,然后通过程序做好对应的查询产品表的数据条件,再去查询产品表。
SELECT `字段1`,`字段2`,`字段3` FROM `prolei` WHERE `category_id`={$lei}# code ... 假设程序处理之后的条件为 $where = ...SELECT `字段1`,`字段2`,`字段3` FROM `pro` WHERE `goods_id` IN {$where} #根据你自己的需求条件 IN;=;LIKE
希望对你有帮助
相关文章:
1. java - mybatis怎么实现在数据库中有就修改,没有就添加2. MYSQL新建用户设置可以远程访问的问题3. $fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题4. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)5. angular.js - angularjs的自定义过滤器如何给文字加颜色?6. javascript - 用表单提交两个时间段请求后台返回对应数据时出现的一些问题!7. node.js - nodejs和前端JavaScript 字符串处理结果不一样是什么原因?8. mysql - SQL操作时间的函数?9. mysql - 我的myeclipse一直连显示数据库连接失败,不知道为什么10. mysql 为何insert的时候会有lock wait timeout 异常
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)