V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
miaojh
V2EX  ›  问与答

mysql 两张表关联查询的 sql 怎么写?

  •  1
     
  •   miaojh · Feb 26, 2018 · 3772 views
    This topic created in 2991 days ago, the information mentioned may be changed or developed.
    有两张表 a 和 b,两张表,现在需要根据 a 表中 分数 查询出 学生实际的得分情况

    a 表
    name 得分
    张三 55
    李四 60
    王五 85


    b 表
    分数 所占比例%
    0 0
    20 5
    40 10
    60 40
    80 60
    100 80

    现在需要查询出 他们实际得到的分数 例如:
    1.张三 分数 55 在 b 表中 大于 40 小于 60 所占比例为 10 故 张三得到的实际分数为 55*10%=5.5
    2.李四 分数 60 在 b 表中 大于等于 60 小于 80 所占比例为 40 故 张三得到的实际分数为 60*40%=24
    需要得到的结果如下
    name 分数 实际分数
    张三 55 5.5
    李四 60 24
    3 replies    2018-02-26 09:54:48 +08:00
    tradzero
        1
    tradzero  
       Feb 26, 2018 via Android   ❤️ 2
    意思现在作业也放在 v2 上问?
    king2014
        2
    king2014  
       Feb 26, 2018
    B 表的意义是?
    直接代码逻辑判断不行吗?
    我看 B 表就是一个分数区间占比
    Tokin
        3
    Tokin  
       Feb 26, 2018   ❤️ 1
    为什么不直接查出来然后再计算实际分数。。。
    SQL 查询的时候坐算术运算不嫌占资源么
    按照你现有的表结构我还不知道怎么写,但是改了一下 B 表可以很方便的查询出结果
    SQL 语句如下:
    SELECT a.`name` '姓名', a.`score` '分数', a.`score`*(b.scale/100) '占比'
    FROM `a` a
    LEFT JOIN `b` b ON (a.`score` BETWEEN b.`range1` AND b.`range2`)
    B 表结构:

    其实就是加了一个区间
    查询结果如下:
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4652 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 10:09 · PVG 18:09 · LAX 03:09 · JFK 06:09
    ♥ Do have faith in what you're doing.