zoukankan      html  css  js  c++  java
  • mysql连接查询:3个数据表操作研究

    首先,新建数据表aaa、bbb以及他们相关联的数据表avb;字段名如下图

    填充点数据,如下:

    上面设计表的时候,故意在两个表中有相同字段con,如果不做处理的话,在php程序中,看看什么情况?得到的结果集中的con是aaa表的,还是avb表的?

    1     $sql = "SELECT * FROM aaa LEFT JOIN avb ON aaa.a_id = avb.a_id";
    2     $db->query($sql);
    3     $result_list = $db->get_all();
    4     echo '<pre>';
    5     print_r($result_list);

    如果将aaa LEFT JOIN avb 改为 avb RIGHT JOIN aaa呢?

    答曰:1.理论上结果集是一样的 2.但是php中对相同项的内容,取的是后表中的。

    总结一下:

    a left join b , a的记录全保留,b往a填内容,相同字段记录留b的(left join左为主,相同字段留后表的)

    a right join b, b的记录全保留,a往b填内容,相同字段记录留b的(right join右为主,相同字段留后表的)


     第2大问题,3个表如何连接查询?取出对应的数据?

    答曰:上面左连接、右连接搞明白得到的结果集后,三个表就是2个表连接后的结果集再和第三个表连接。写法上如下

    SELECT * FROM aaa INNER JOIN avb ON aaa.a_id = avb.a_id INNER JOIN bbb ON avb.b_id = bbb.b_id

     上面的语句用where子句也可以

    SELECT * FROM aaa, bbb, avb WHERE aaa.a_id = avb.a_id AND  bbb.b_id = avb.b_id

    再看一遍

     

    如果是在PHP中得到的结果集是:

  • 相关阅读:
    P1856 [USACO5.5]矩形周长Picture 题解
    题解 SP703 【SERVICE
    题解 P2893 【[USACO08FEB]Making the Grade G】
    P4551 最长异或路径 题解
    P3834 【模板】可持久化线段树 2(主席树)题解
    用正则表达式验证用户名输入的正确性
    软件测试杂谈
    next_permutation
    刊物论文级别
    android 之常见事件响应的实现方式对比
  • 原文地址:https://www.cnblogs.com/html55/p/10541977.html
Copyright © 2011-2022 走看看