$oeuoe=$Model->query("select s.tname,sf.tip,i.nickname,
o.type,o.q_user,o.j_type,o.c_type,
o.hbtime,o.hb_order,o.d_time,o.k_time,
o.j_time,o.order_id,o.cc_name,o.s_dz,o.cc_tip,o.text,o.dz,o.account,o.gaos_account,
o.tc_account,o.za_account,cf,jinwei,jinwei as jinwei2,o.sf_type,o.c_time,o.c_dz
from tp_lq_order o left join tp_lq_tname s on s.id=o.t_id
left join tp_wxusers i on i.openid=o.openid
left join tp_lq_sif sf on sf.id=o.s_id
where o.openid in(
select openid from tp_lq_user where py_dai in (
select dm from tp_lq_dm where dm=$id
)
) order by o.id ,o.type");
这是 左关联 加上子查询!
sql左关联加子查询
答案:2 悬赏:0 手机版
解决时间 2021-04-09 12:49
- 提问者网友:佞臣
- 2021-04-08 23:54
最佳答案
- 五星知识达人网友:詩光轨車
- 2021-04-09 01:15
呵呵,这是一个自身连接的问题, use pubs select title ,type ,advance from titles a where a.advance> (select avg(b.advance) from titles b where a.type=b.type//这里为什么??a b 难道不代表同一个表吗 ) //为什么删除后 会不同?? 其实A表与B表都是titles表,是一个实际的表, 但这里由于要用到自身连接(自己和自己连接进行查询), 因此就将titles表看成两个虚拟的表(表a与表b), 然后where a.type=b.type是表示从同一个type中去找avg(b.advance), 也就是同一个Type的advance的平均值, 因此整个语句是一个自身连接,意思是查找出比同type的advance的平均值大的记录。 呵呵,希望能有帮助,^_^
全部回答
- 1楼网友:不如潦草
- 2021-04-09 02:09
是一张表~
一张表起了2个别名,于是就表示两张‘表’
其实你可以看作是名称、结构、数据完全相同的两张表做查询。
-------------------------
你先理解下这个语句的意思,这个语句是查询出advance大于advance的平均值的记录,一张表是无法自己对自己进行比较的,这时就需要做一个镜像表,进行比较,于是取不同的别名来区别它们。
打个不是很恰当的比方:
如果问你长得帅不帅,但你不知道其他人都长什么样,也不知道自己长什么样,你就不知道自己到底帅不帅,这时给你面镜子,你看到了镜子中的镜像说 这小伙挺顺眼的,这就进行了自连接(自己的比较),如果这时你旁边出现个很丑的人,你心里就纳闷咋还有这么丑的人呢,这就进行了外连接(与其他表的比较)。
比方不恰当,楼主自行体会,用多了就明白了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯