Board logo

标题: SQL JOIN 连接 [打印本页]

作者: vicky.yu    时间: 2024-9-3 09:31     标题: SQL JOIN 连接

SQL JOIN 连接
 SQL 连接(JOIN) 子句用于将数据库中两个或者两个以上表中的记录组合起来。连接通过共有值将不同表中的字段组合在一起。

 我们来看看"Orders"表中的选择:

OrderID        CustomerID        OrderDate
10308        2        1996-09-18
10309        37        1996-09-19
10310        77        1996-09-20
 然后,查看"Customers"表中的选择:
CustomerID        CustomerName        ContactName        Country
1        Alfreds Futterkiste        Maria Anders        Germany
2        Ana Trujillo Emparedados y helados        Ana Trujillo        Mexico
3        Antonio Moreno Taquería        Antonio Moreno        Mexico
 请注意,"Orders"表中的“客户ID”列是指"CustomerID"表中的“客户ID”。上面两个表格之间的关系是“CustomerID”列。

 然后,我们可以创建下面的SQL语句(包含一个INNER JOIN),它选择两个表中具有匹配值的记录:

 代码示例:

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
 它会产生这样的东西:
OrderID        CustomerName        OrderDate
10308        Ana Trujillo Emparedados y helados        9/18/1996
10365        Antonio Moreno Taquería        11/27/1996
10383        Around the Horn        12/16/1996
10355        Around the Horn        11/15/1996
10278        Berglunds snabbköp        8/12/1996
 考虑下面两个表,(a)CUSTOMERS 表:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+
 (b)另一个表是 ORDERS 表:

    +-----+---------------------+-------------+--------+
    |OID  | DATE                | CUSTOMER_ID | AMOUNT |
    +-----+---------------------+-------------+--------+
    | 102 | 2009-10-08 00:00:00 |           3 |   3000 |
    | 100 | 2009-10-08 00:00:00 |           3 |   1500 |
    | 101 | 2009-11-20 00:00:00 |           2 |   1560 |
    | 103 | 2008-05-20 00:00:00 |           4 |   2060 |
    +-----+---------------------+-------------+--------+
 现在,让我们用 SELECT 语句将这个两张表连接(JOIN)在一起:

    SQL> SELECT ID, NAME, AGE, AMOUNT
            FROM CUSTOMERS, ORDERS
            WHERE  CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
 上述语句的运行结果如下所示:

    +----+----------+-----+--------+
    | ID | NAME     | AGE | AMOUNT |
    +----+----------+-----+--------+
    |  3 | kaushik  |  23 |   3000 |
    |  3 | kaushik  |  23 |   1500 |
    |  2 | Khilan   |  25 |   1560 |
    |  4 | Chaitali |  25 |   2060 |
    +----+----------+-----+--------+




欢迎光临 赛捷软件论坛 (http://sagesoft.cn/bbs/) Powered by Discuz! 7.2