V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
m939594960
V2EX  ›  MySQL

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

  •  
  •   m939594960 · 2015-04-28 16:44:35 +08:00 · 4234 次点击
    这是一个创建于 3292 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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语句实现不了把! 我是编了好半天

    原谅我的低基础。。。

    17 条回复    2015-04-29 08:46:54 +08:00
    cover
        1
    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
        2
    m939594960  
    OP
       2015-04-28 17:31:15 +08:00
    @cover 感谢你回答! 刚刚脑子没转过来 现在已经大概实现了!!!
    asj
        3
    asj  
       2015-04-28 17:31:16 +08:00
    你可能需要描述一下custom_status表里的数据。
    是不是一个custom对应多条status记录,分别记录不同时间点的状态?
    还是status里只是记录custom当前的状态,如果这样的话非常简单,三张表join一下就行了
    mcfog
        4
    mcfog  
       2015-04-28 17:34:41 +08:00
    join 子查询什么的,用超过2个只能说明要么表设计不合适了,要么该冗余一份数据了
    (定时出报表等情况除外)
    staticor
        5
    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
        6
    m939594960  
    OP
       2015-04-28 18:51:26 +08:00
    @asj custom_status为用户状态表
    custom对应多条status记录,分别记录不同时间点的状态? 是这样的!!
    m939594960
        7
    m939594960  
    OP
       2015-04-28 18:54:55 +08:00
    @mcfog 效率啥的离我还有点远。。 主要实现功能
    这个是一个房产经纪人的产品

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

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


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

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

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

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

    也就3条SQL,主键和索引查询要快得多
    mqzhang
        12
    mqzhang  
       2015-04-28 19:44:26 +08:00 via Android
    什么数据库? 目测需要window函数
    m939594960
        13
    m939594960  
    OP
       2015-04-28 21:30:16 +08:00
    @lujiajing1126 主要就像使用一条 sql语句。。。。 这种情况是一条sql快 还是分开查快。。。 总结的分开查怪怪的。。。
    @mqzhang mysql php。。。
    rqrq
        14
    rqrq  
       2015-04-28 22:26:24 +08:00
    页面是怎么显示这些数据的?
    whatisnew
        15
    whatisnew  
       2015-04-28 22:36:36 +08:00
    EXPLAIN
    m939594960
        16
    m939594960  
    OP
       2015-04-29 08:45:49 +08:00
    @rqrq 列表啊!
    @whatisnew EXPLAIN 学习中 好复杂。。。
    msg7086
        17
    msg7086  
       2015-04-29 08:46:54 +08:00
    @m939594960 如果你的程序和数据库在一台机器上,并且查询结果的量不大,那么多数是分开查询效率更高一些。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1912 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 16:12 · PVG 00:12 · LAX 09:12 · JFK 12:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.