
UPDATE order_items AS U1 INNER JOIN (SELECT X.provider_id, X.product_id, X.order_id, X.model_id, Y.qty, (SELECT M.price * N.discount FROM quotation AS M LEFT JOIN quotation_discount N ON M.provider_id = N.provider_id AND M.product_id = N.product_id WHERE M.model_id = X.model_id AND M.provider_id = X.provider_id AND Y.qty BETWEEN N.min_quantity AND N.max_quantity) AS price FROM (SELECT A.model_id, A.order_id, B.provider_id, C.product_id FROM order_inquiry_items A LEFT JOIN order_inquiry B ON A.order_inquiry_id = B.id LEFT JOIN product_model C ON A.model_id = C.id WHERE A.order_id = 23 AND B.provider_id = 14 AND C.product_id = 1) AS X LEFT JOIN order_items Y ON X.model_id = Y.model_id AND X.model_id = Y.model_id) AS U2 ON U1.order_id = U2.order_id AND U1.model_id = U2.model_id SET U1.price = U2.price 1 gamecreating 2015 年 10 月 14 日 ........ |
2 jjx 2015 年 10 月 14 日 用 sqlalchemy sql expression 写 |
3 mahone3297 2015 年 10 月 14 日 感觉 lz 的缩进,已经非常合理了吧。。。。 |
4 vibbow 2015 年 10 月 14 日 把注释写清楚,然后以后再也不要碰这段 sql |
5 thinkif 2015 年 10 月 14 日 如果数据库支持的话,能用 CTE ,事情就明了多了 |
6 XianZaiZhuCe 2015 年 10 月 14 日 via Android 能写出来就很了不起。。。 |
7 echo1937 2015 年 10 月 14 日 不知道表结构,看到这么长的 SQL 都不想看下去。 |
8 WispZhan 2015 年 10 月 14 日 和我最近写个几个很相似,起码我已经找不到办法了。只能注意缩进和注释。如果楼下有好办法,请 @我一下,谢谢。 |
9 hinate 2015 年 10 月 14 日 via Android 如果是在代码里的话就分开在拼装→_→ |
10 zonghua 2015 年 10 月 15 日 via iPhone 应该在应用程序里面做,而不是数据库? |
11 shenqiu2015 2015 年 10 月 15 日 首先,这个思路就错了,如楼上所说,复杂的业务逻辑用程序做,别用数据库 |
12 arslion 2015 年 10 月 15 日 赞同 4L 哈哈哈哈哈 |
13 cxbig 2015 年 10 月 15 日 如果只是临时调试,用一用还可以。项目里最好用数据库抽象层的面向对象方式来定义功能。 |
14 Strikeactor 2015 年 10 月 15 日 人看着都晕的东西,你还希望数据库的性能优化器能看明白? |
15 adexbn 2015 年 10 月 15 日 via iPhone 尽量在程序里实现,尽量不要组装大 SQL ,可以把一部分逻辑先固化成表或者视图(比如你的两个 select join ),最后,如果真的会出现这么复杂的 SQL ,想一下业务逻辑是不是哪里不合理 |
16 htc502 2015 年 10 月 17 日 X , Y , U1 , U2 也许该有个更合适的名字。。。 |
17 Reficul 2015 年 10 月 19 日 内核恐慌里面那个主持人据说写了上千行的 SQL... |