在mysql数据库上加入查询[重复]
Posted
技术标签:
【中文标题】在mysql数据库上加入查询[重复]【英文标题】:Join query on mysql database [duplicate] 【发布时间】:2018-07-23 05:09:59 【问题描述】:我想从另一个表中获得一个表和两个不同名称的完整列表,其中第一个表的两个 id 与另一个两个表匹配。 这是我的查询:
$sql =
"select
ls.id, ls.cat_id, ls.sub_id, rs.cat_name, lh.sub_cat_name,
ls.prod_name, ls.price, ls.availability, ls.description, ls.img_1,
ls.img_2, ls.img_3,ls.img_4, ls.img_5, ls.img_6, ls.img_7, ls.img_8,
ls.img_9, ls.img_10, ls.prod_order, ls.type
from product as ls
left join category as rs on rs.id = ls.cat_id
left join subcategory as lh on lh.id = ls.sub_id
where ls.id ='".$pid."'";
所以查询工作正常。所以我的问题是这可以标准化为长度更短的查询吗?
【问题讨论】:
如果你想从ls
得到所有东西,ls.*
不行吗?会使查询更短。
这里没有什么可以缩短的(生产代码中不推荐使用select *)。这个查询太简单了。
你认为它为什么需要缩短?
@Akshay 在查询中写这么多字段非常烦人,实际上我想要我的第一个字段中的所有内容。
【参考方案1】:
您的查询
select
**
ls.id,
ls.cat_id,
ls.sub_id,
rs.cat_name,
lh.sub_cat_name,
ls.prod_name,
ls.price,
ls.availability,
ls.description,
ls.img_1,
ls.img_2,
ls.img_3,
ls.img_4,
ls.img_5,
ls.img_6,
ls.img_7,
ls.img_8,
ls.img_9,
ls.img_10,
ls.prod_order,
ls.type
**
from product as ls
left join category as rs
on rs.id = ls.cat_id
left join subcategory as lh
on lh.id ls.sub_id
where ls.id = $pid;
所以粗体(被** **括起来)字符可以用ls替换。*表示表中的所有属性都已被选中,所以查询看起来像
select
ls.*
from product as ls
left join category as rs
on rs.id = ls.cat_id
left join subcategory as lh
on lh.id = ls.sub_id
where ls.id ='".$pid."'";
【讨论】:
您不应该在生产代码中使用 select *。见***.com/questions/321299/… @DipyanDas 你感谢我,尽管我在评论中写道你不应该这样做。以上是关于在mysql数据库上加入查询[重复]的主要内容,如果未能解决你的问题,请参考以下文章