如何在SQL中连接三个表?

时间:2016-03-15 08:39:31

标签: sql

我有以下表格。一个订单号表,购买商品表和另一个交货状态表。

Table1(order_number)        Table2(items)         Table3(status)
        01                      0001                  shipped
        01                      0001                  delivered
        01                      0002                  shipped
        01                      0002                  delivered

我的查询要做的是获取订单号,从table2获取一个项目及其状态历史记录。查询应输出此内容。

Table1(order_number)        Table2(items)         Table3(status)
        01                      0001                  shipped
        01                      0001                  delivered

到目前为止,我只能获得所有项目,但不能只提取一个项目。这是我的代码示例。

SELECT
     table2.item
   , table1.order_nr
   , tabl3.name AS status
FROM table1
LEFT JOIN table2 ON table1.order = table2.order
LEFT JOIN table3 ON table2.item = table3.item

1 个答案:

答案 0 :(得分:0)

您可能需要提供有关所需项目的一些详细信息。否则sql将返回满足您查询的所有数据。

引入一个WHERE子句并告诉sql你需要显示的内容。

例如,下面的查询将返回项001

的状态
SELECT 
table2.item,
table1.order_nr,
tabl3.name as status
FROM
table1
    LEFT JOIN
table2 ON table1.order = table2.order
    LEFT JOIN
table3 ON table2.item = table3.item
WHERE table2.item = 0001   

或者正如您所提到的,如果您只需要使用LIMIT关键字

来获取一条记录
SELECT
    table2.item,
    table1.order_nr,
    tabl3.name as status
FROM
    table1
        LEFT JOIN
    table2 ON table1.order = table2.order
        LEFT JOIN
    table3 ON table2.item = table3.item
LIMIT 1

这是My SQL语法;

SELECT column_name(s)
FROM table_name
LIMIT number;