最新消息:文章中包含代码时,请遵守代码高亮规范!

关于数据库连表查询的一些小总结【原创】

PHP sherri 284浏览
表的联结:在一个表中插入另一个表的主键ID,来将两个表的内容联系起来。
例如:在查询时SELECT vendor_name,prod_name,prod_price FROM vendors,products WHERE vendors.vend_id = products.vend.id;—–简单的等值语法
———vendors , products为两个不同的表;vend_id为vendors的主键,在products里面的vent_id为关联外键,通过上面的where后面的语句即可把两张表连成一张表,然后即可实现同时查询两张表的数据
内联结(inner join):与上面的语法返回相同数据——-首选
——–SELECT vend_name, prod_name, prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id;
注意:联结多个表,条件用AND连接
简单等值语法联结多个表:SELECT prod_name,vendor_name,prod_price,quantity FROM OrderItems,Products,Vendors WHERE Products.vend_id = Vendor.vend_id And OrderItems.prod_id = Products.prod_id AND order_num = 20007
inner join联结多个表:语法格式—FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号……….
关于连表查询出现同名字段的解决方案:左连接查询在开发中很常用,但有个问题常常会遇到,两个表中有同名字段时,比如左右表都有一个id字段,会造成查询结果中左表的id值被右表的id值覆盖掉(大部分php框架都是这个效果),而且还不会报错,容易留下隐蔽的bug!
解决办法很简单,给同名字段用AS起别名。例如:order表,farmer表都含有id字段,
SELECT *,order.id AS oid,farmer.id AS fid,farmer.name AS fname,farmer.type AS ftype FROM `order` LEFT JOIN farmer ON order.fid = farmer.id WHERE ( order.id = ‘10000067’ ) LIMIT 1

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/22665.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者sherri的打赏,我们会更加努力!    如果您想成为作者,请点我