V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
awanganddong
V2EX  ›  程序员

有三张一对多的表,求一个查询思路

  •  
  •   awanganddong · 2020-07-03 09:14:27 +08:00 · 1624 次点击
    这是一个创建于 1386 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数据库是这么设计的 A 表 id B 表 id aid C 表 id aid bid

    a 表和 c 表状态的更改会影响 b 表状态

    现在前端显示我是直接通过判断 a 表和 c 表状态,来进行 b 表状态渲染展示

    现在遇到问题,就是查询 b 表状态的时候,sql 不知道怎么写了

    正常是 a 表和 c 表变化,直接增加字段,更改 b 表里边的值,然后可以直接通过 b 表查询,但是现在业务糅杂。 有什么改动小的方案。

    9 条回复    2020-07-03 21:05:12 +08:00
    mmrx
        1
    mmrx  
       2020-07-03 09:34:16 +08:00
    有一说一,没看懂你描述的业务场景

    var a, b, c 起名也不是这么起的叭
    Yuicon
        2
    Yuicon  
       2020-07-03 09:49:35 +08:00
    b 表不是多余的么 整合到 c 表不行么
    summerwar
        3
    summerwar  
       2020-07-03 10:02:04 +08:00
    没有场景描述,没人能看懂你说的什么
    Johnny168
        4
    Johnny168  
       2020-07-03 10:22:36 +08:00
    没场景,不明所以
    remarrexxar
        5
    remarrexxar  
       2020-07-03 10:32:55 +08:00
    看起来像是类似省市区的模型,但是不理解为什么中间的 b 是受 ac 影响的,是不是最早建模型就不对。
    caola
        6
    caola  
       2020-07-03 10:41:32 +08:00
    如果状态是都保持一致的,那直接记录在一个表上就行了
    awanganddong
        7
    awanganddong  
    OP
       2020-07-03 20:58:39 +08:00 via Android
    广告行业
    广告投放下边是推广计划
    计划下边是创意素材
    都是一对多的关系
    每张表都有不同的状态,
    比如广告投放有总预算,下边的计划也有总预算。
    在前台显示的时候,我现在是通过&&这种来获取需要渲染的数据。
    但是问题在于,如果查询的时候,我就不能单单靠其中一张表来判断。

    需要综合这三张表总的状态来判断

    也就是每张表各维护各自状态

    在查询时候。我不知道怎么处理了。
    awanganddong
        8
    awanganddong  
    OP
       2020-07-03 21:03:18 +08:00 via Android
    更正下,推广计划下边是广告投放。


    公司技术负责人给的意见是,每张表状态修改,同步修改其关联表
    awanganddong
        9
    awanganddong  
    OP
       2020-07-03 21:05:12 +08:00 via Android
    这之间可以写入队列消费,但是现在采用这种方案基本代码各种逻辑都需要变动。这个成本偏高。所以想求个平滑点的办法。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5695 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:54 · PVG 09:54 · LAX 18:54 · JFK 21:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.