在資料庫“prodbase”中,我有三個表:
餐桌產品
|id | productname | productprice | productsupplierID (int11) |
---- ------------- ----------------- ----------------------------
| 1 | Shirt | 20 | 3 |
| 2 | Tshirt | 25 | 5 |
餐桌供應商
|supplierid (int11) | suppliername (varchar) |
-------------------- ------------------------
| 3 | CompanyA |
| 5 | CompanyB |
餐桌人員
|id | staffname | staffposition |
---- ------------- -------------------
| 1 | John | sales |
| 2 | Megan | accounting |
表 Products 使用表 Supplier 中的查找欄位:supplierID。
我已經為聯合表 Products 和 Staff 創建了一個資料庫視圖。使用以下查詢。
SELECT 'prodbase'.'Products'.'productname' AS 'Product', 'prodbase'.'Products'.'productsupplierID' AS 'Supplier' FROM 'prodbase'.'Products'
UNION
SELECT 'prodbase'.'Staff'.'staffname' AS 'Staff', 'prodbase'.'Staff'.'staffposition' AS 'Position' FROM 'prodbase'.'Staff'
ORDER BY 'Supplier'
DESC LIMIT 5;
查詢正在運行,但它在供應商列中顯示編號 (ID)。
Product: Shirt
Staff: John
Position: sales
Supplier: 3
如何使用 JOIN 創建此 UNION 查詢,以便顯示 Suppliername insted of supplierID? 所需輸出的示例:
Product: Shirt
Staff: John
Position: sales
Supplier: CompanyA
uj5u.com熱心網友回復:
您需要解決一些問題才能以您想要的方式回傳資料。首先,我認為您在這里不需要 UNION。UNION 是當您想要將多個查詢合并為一個時。我認為您只需要在資料上使用 INNER JOIN 即可獲得所需的輸出。說到關系,你錯過了一個重要的關系。員工、產品和供應商之間沒有關系,因此除非您合并關系表,否則無法提供您想要的輸出。我創建了一個名為 Sale 的可想象關系表的示例,它將員工與銷售的產品聯系起來。這不是一個完美的例子,但它可以讓您實際使用資料。使用關系表,您可以通過 INNER JOIN 獲取員工銷售的所有產品,在這個簡單的示例中。
CREATE TABLE Products(id INT, productname VARCHAR(50), productprice int, productsupplierID int); CREATE TABLE Supplier(supplierid INT, suppliername VARCHAR(50)); CREATE TABLE Staff(id INT, staffname VARCHAR(50),staffposition VARCHAR(50)); CREATE TABLE Sale(staffid INT, productId INT); INSERT INTO Products VALUES(1,'Shirt',20,3),(2,'Tshirt',25,5); INSERT INTO Supplier VALUES(3,'CompanyA'),(5,'CompanyB'); INSERT INTO Staff VALUES(1,'John','Sales'),(2,'Megan','Accounting'); INSERT INTO Sale VALUES(1,1);
SELECT Products.productname AS Product, Staff.staffname AS Staff, Staff.staffposition AS Position, Products.productprice AS Price, Supplier.suppliername AS Supplier FROM Sale INNER JOIN Products ON Products.id=Sale.productId INNER JOIN Supplier ON Supplier.supplierid=Products.productsupplierID INNER JOIN Staff ON Staff.id = Sale.staffid
產品 | 員工 | 職位 | 價格 | 供應商 :-------- | :---- | :------- | ----: | :-------- 襯衫 | 約翰 | 銷售 | 20 | A公司
db<>在這里擺弄
已編輯 - 我根據評論洗掉了銷售。我想你可以交叉加入員工,但是,如果產品/供應商和員工之間沒有關系,就沒有邏輯方法可以將資料放在上面。
SELECT
Products.productname AS Product,
Products.productprice AS Price,
Supplier.suppliername AS Supplier
FROM
Products
INNER JOIN Supplier ON Supplier.supplierid=Products.productsupplierID
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/474685.html
上一篇:將表中的最大行數配對到另一個表
下一篇:生成隨機對SQL
