当前位置:Gxlcms > PHP教程 > mysql左连接语句如何写

mysql左连接语句如何写

时间:2021-07-01 10:21:17 帮助过:6人阅读

mysql左连接语句怎么写?
本帖最后由 u010572351 于 2013-06-30 12:01:20 编辑

情况是这样的,三张表的左连接,用户表,商品表,用户购买商品记录表.其中商品记录表记录了用户的id,商品的id,关联了用户表和商品表,要求三张表左连接,查询出包含用户名字,商品名字的商品记录。

users 表:uid ,uname
goods表:gid,gname
shop 表:id,uid,gid

大家看看怎么写啊?

我是这样写的:先连接记录表和用户表,形成一个临时表,再用临时表和商品表左连接,结果是错的,why???
select * from
(shop left join users on shop.uid=users.uid)
as tmp
left join goods on tmp.gid=goods.gid;(提示错误)


这样写是正确的,但是不理解:(没有临时表的概念)
select * from
(shop left join users on shop.uid=users.uid)
left join goods on shop.gid=goods.gid;(貌似正常)


1.我的理解是A左连接B表,会出现一个新的表,新的表再左连接C表,不知道有没有错/
2.我总感觉A左连接B再连接C和A左连接C再连接B不一样。

分享到:


------解决方案--------------------
你确定第二个是正确的?
子句中没有 select * from ...

select * from
(select * from shop left join users on shop.uid=users.uid)
as tmp
left join goods on tmp.gid=goods.gid;

------解决方案--------------------
sql分析查询器得到的结果是什么
------解决方案--------------------
不需要括号的地方就尽量不要用括号,以免把自己弄糊涂了

select * from shop
left join users on shop.uid=users.uid
left join goods on shop.gid=goods.gid
表示的是 shop 左链接 users 和 shop 左链接 goods

你的第一式应写作
select * from
(select * from shop left join users on shop.uid=users.uid) as tmp
left join goods on tmp.gid=goods.gid;

人气教程排行