SQL 语句求助 我是在编不下去了。。。。

2015-04-28 16:44:35 +08:00
 m939594960
SELECT
    custom_name,
    think_houses.houses_name,
  (SELECT custom_status_status FROM think_custom_status WHERE custom_custom_id=custom_id ORDER BY custom_status_status DESC LIMIT 0,1) as custom_status
FROM
    think_custom
INNER JOIN think_houses ON think_custom.houses_houses_id = think_houses.houses_id
WHERE
    `borker_borker_id` = '4'
LIMIT 0,
 1

说下 我这个表要干啥。。
一个经纪人表
取出 经纪人对应的客户列表 然后 每个客户的状态 与 客户的发生状态的时间 (存于 custom_status表)

然后还有个筛选功能 客户状态为 4 的所有。。。。

我感觉一个sql语句实现不了把! 我是编了好半天

原谅我的低基础。。。

4273 次点击
所在节点    MySQL
17 条回复
cover
2015-04-28 17:22:35 +08:00
虽然没有看懂,但是好像很厉害的样子。。
没有详细的表结构 也看不出啥,反正先想办法把正确的数据select出来,然后在优化sql语句把。。(比如左右连接)
我看你的需求好像意思就是
select custom_status ,custom_id,custom_staus_time from custom_status where broker_id = brokerId and custom_status = 4 ?
m939594960
2015-04-28 17:31:15 +08:00
@cover 感谢你回答! 刚刚脑子没转过来 现在已经大概实现了!!!
asj
2015-04-28 17:31:16 +08:00
你可能需要描述一下custom_status表里的数据。
是不是一个custom对应多条status记录,分别记录不同时间点的状态?
还是status里只是记录custom当前的状态,如果这样的话非常简单,三张表join一下就行了
mcfog
2015-04-28 17:34:41 +08:00
join 子查询什么的,用超过2个只能说明要么表设计不合适了,要么该冗余一份数据了
(定时出报表等情况除外)
staticor
2015-04-28 18:09:40 +08:00
selectc customer, broker, datetime, status
from (
select broker, broker_id from b_table
natural left join (
select broker_id, c_id, customer, datetime, status
from cus_table
)

where status = 4


???
m939594960
2015-04-28 18:51:26 +08:00
@asj custom_status为用户状态表
custom对应多条status记录,分别记录不同时间点的状态? 是这样的!!
m939594960
2015-04-28 18:54:55 +08:00
@mcfog 效率啥的离我还有点远。。 主要实现功能
这个是一个房产经纪人的产品

这个是一个交易列表需要调用的sql

列表主要包含信息
楼盘名称 (我放到一个表里)
经纪人名称 (我放到一个表里)
交易现在状态(我放到一个表)
最后状态时间 (我放到交易现在状态表。)


这个表结构 应该如何优化? 放到一个表里? 在状态改变的时候往主表里写?

谢谢你了!
m939594960
2015-04-28 18:55:26 +08:00
@mcfog 怎么样去实现是最好的办法?
iamdbc
2015-04-28 19:22:03 +08:00
把你需要联查的数据冗余到现在的表里。
或者如果经纪人id不是很多,可以判断出来多少个的话,把经纪人id取出来,在关联表里where in。
一个SQL实现不了就拆开,不然数据大了,联查就是噩梦。
m939594960
2015-04-28 19:28:53 +08:00
@amdbc 嗯谢谢 !
lujiajing1126
2015-04-28 19:36:27 +08:00
三个模型,交易,楼盘,经纪人

交易hasOne楼盘,hasOne经纪人,包括交易现在的状态。。。

取一个交易。。然后就能取出经纪人和楼盘和现在的状态啊= =。。用ORM关联就好了哈哈哈哈

也就3条SQL,主键和索引查询要快得多
mqzhang
2015-04-28 19:44:26 +08:00
什么数据库? 目测需要window函数
m939594960
2015-04-28 21:30:16 +08:00
@lujiajing1126 主要就像使用一条 sql语句。。。。 这种情况是一条sql快 还是分开查快。。。 总结的分开查怪怪的。。。
@mqzhang mysql php。。。
rqrq
2015-04-28 22:26:24 +08:00
页面是怎么显示这些数据的?
whatisnew
2015-04-28 22:36:36 +08:00
EXPLAIN
m939594960
2015-04-29 08:45:49 +08:00
@rqrq 列表啊!
@whatisnew EXPLAIN 学习中 好复杂。。。
msg7086
2015-04-29 08:46:54 +08:00
@m939594960 如果你的程序和数据库在一台机器上,并且查询结果的量不大,那么多数是分开查询效率更高一些。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/187014

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX