天天看點

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

1.問題

最近,發現工廠中的房間在使用條碼列印系統列印的時候,為了列印條碼,從系統生産任務單中一個一個複制到EXCEL表中,然後根據事先設定的模闆進行批量列印,這種重複性的CTRL+C和CTRTL+V不但效率低,而且還容易出錯。

通過檢視,資料庫系統為POSTGRESQL10.0,相關的資料表有三個,分别為mrpproduction、stockproductionlot、producttemplate,它們的表結構和内容如下:

生産單表(mrp_production):

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

産品序列号表(stockproductionlot):

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

産品名稱規格表(product_template):

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

其中:

在mrpproduction表中,字段finallotid與stockproduction_lot表中字段id關聯;

在mrpproduction表中,字段productid與stockproductionlot表中字段id關聯。

現在要通過查詢指定日期範圍内的生産單,它所對應的産品批次号是多少,同時查詢出對應的産品名稱。

2.實作方法

SELECT

A.NAME,

C.NAME,

C.nc_model,

C.nc_specification,

B.NAME,

--A .final_lot_id,

--A .product_id,

A.create_date

FROM

mrp_production AS A

LEFT JOIN stock_production_lot AS B ON A .final_lot_id = B.ID

LEFT JOIN product_template AS C ON A .product_id = C.ID

WHERE A.create_date BETWEEN '2020-06-18 12:00:00' AND '2020-06-24 23:59:59'

ORDER BY A.ID ASC;

改一下查詢條件:

SELECT

A.NAME,

C.NAME,

C.nc_model,

C.nc_specification,

B.NAME,

--A .final_lot_id,

--A .product_id,

A.create_date

FROM

mrp_production AS A

LEFT JOIN stock_production_lot AS B ON A .final_lot_id = B.ID

LEFT JOIN product_template AS C ON A .product_id = C.ID

WHERE A.create_date

BETWEEN

(SELECT current_timestamp - interval '11 day')

AND current_timestamp

ORDER BY A.ID ASC;

3.實作結果

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

4.join、left join、right join、fulljoin間的差別

1)INNER JOIN 關鍵字在表中存在至少一個比對時傳回行。

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

2)LEFT JOIN 關鍵字從左表(table1)傳回所有的行,即使右表(table2)中沒有比對。如果右表中沒有比對,則結果為 NULL。

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

3)RIGHT JOIN 關鍵字從右表(table2)傳回所有的行,即使左表(table1)中沒有比對。如果左表中沒有比對,則結果為 NULL。

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

4)FULL OUTER JOIN 關鍵字隻要左表(table1)和右表(table2)其中一個表中存在比對,則傳回行。FULL OUTER JOIN 關鍵字結合了 LEFT JOIN 和 RIGHT JOIN 的結果。

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

5.後記

上面問題隻是解決了資料庫的查詢問題,如何實作自動化的導出,下一内容将分享PYTHON操作EXCEL相關的部分。

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

學習|生活|分享|積累|永不停步

請留下你指尖的溫度

讓太陽擁抱你

微信ID:haopython

leftjoin多表聯合查詢_使用LEFT JOIN實作多表查詢

繼續閱讀