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;