2017-05-07 80 views
0

我是第一次發佈海報。我正在學習一個數據庫類,並且遇到了使用JOIN命令獲取我需要的數據的麻煩。我希望我走在正確的軌道上......如果在我的模型和查詢中都有更好的方法,我會很感激任何輸入。每個員工已處理從橋接表加入數據

Database ER model

銷售交易,我試圖回答以下問題:

下面是一個查詢我嘗試,但未能拿出正確的輸出。我不得不爲銷售使用表別名,因爲我一直在收到唯一的錯誤。我的橋接表中只有10行,但是我得到了100個結果...... JOIN語句正在踢我的屁股。

SELECT sales.cashier, inventory.prod_name, inventory.unit_price 
FROM inventory, sales 
JOIN inv_sales ON inventory_prod_id = inventory.prod_id 
JOIN sales AS sales1 ON sales_sales_id = sales_id; 

編輯:其他請求的數據

下面是一些示例數據的屏幕截圖。

All tables

我不得不把他們都在一個PIC由於場地的限制。

表:

  • 頂部,Inv_sales
  • 中東,銷售
  • 底部,庫存

預期輸出:

收銀員>產品名稱>單價

+0

請在您的問題中添加樣本輸入數據,預期結果和當前結果 – GurV

+0

您正在混合兩種樣式的連接,舊方式(使用逗號分隔的表格)和當前更常用的方法(使用on子句連接)缺少來自銷售表的關係。另外,您應該使用(「_each employee_」)的訂單。 –

+0

請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查詢 – Strawberry

回答

0

你可能會嘗試這樣的:

SELECT s.cashier, i2.prod_name, i2.unit_price 
FROM sales s 
JOIN inv_sales i1 
ON i1.sales_sales_id = s.sales_id 
JOIN inventory i2 
ON i1.inventory_prod_id = i2.prod_id 
ORDER BY s.cashier,s.date; 

它使用每個表的唯一別名,並使用現代形式的連接表。另外,由於要求是爲每個員工獲得銷售額,所以我添加了一個訂單,因此員工銷售額將被組合在一起。

+0

原諒我在這裏仍然是一個新手,我試過了,輸入這個逐字,我得到一個錯誤。我也忘記提及我正在使用Mariadb而不是實際的MySQL。 錯誤1064(42000):您的SQL語法錯誤;檢查對應於您的MariaDB服務器版本的手冊,以便在'.prod_name,i2.unit_price FROM sales'JOIN inv_sales i1 ON i1.sales_sales_id ='第1行附近使用正確的語法 – grizzly

+0

錯誤是什麼? –

+0

看來我在輸入查詢時犯了一個錯字。這正是我想要的。非常感謝您花時間提供協助。 – grizzly