アイテムの複数の在庫を管理するデータベースがあります。今、私はそこに存在していない項目を含むそれぞれの場所にあるすべてのアイテムを一覧表示することができますどのようにmysqlクエリを使用して、在庫のある場所への外部キーを持つすべてのアイテム
table_items
+----------+-------------+
| id_items | name |
+----------+-------------+
| 1 | item 1 |
| 2 | item 2 |
+----------+-------------+
table_location
+-------------+-------------+
| id_location | name |
+-------------+-------------+
| 1 | location 1|
| 2 | location 2|
+-------------+-------------+
table_stock
+-------------+-----------+----------+
| id_location | id_item | stock |
+-------------+-----------+----------+
| 1 | 1 | 3 |
| 1 | 2 | 0 |
| 2 | 1 | 1 |
+-------------+-----------+----------+
: は、私のような3テーブルを持っています。たとえば、私は場所2でアイテムを取得したいので、その結果は次のようになります。
+-------------+-----------+----------+
| id_location | id_item | stock |
+-------------+-----------+----------+
| 2 | 1 | 1 |
| 2 | 2 | null |
+-------------+-----------+----------+
または多分このような何かを行うには、他の方法がありますか..?これはあなたの場所&アイテム賢明総株式を与える
SELECT s.id_location, i.id_items, CASE WHEN sum(stock)=0 THEN null ELSE sum(stock) END AS stock
FROM table_items i LEFT JOIN table_stock s ON i.id_items=s.id_items
WHERE s.id_location=2
GROUP BY s.id_location, i.id_items;
:
私はここに何かが欠けていると思う、結果は私の質問の例のようなものではないようです。私は** id_location **と** id_item **が必要です。その罰金は0かヌルかどうかです。 – inumaru
@inumaruあなたの要件を理解するごとに、これはうまくいくと思います。このクエリは、あなたに場所とアイテムの賢明な総株を与えるでしょう。あなただけの位置を必要とする場合は、投影&グループ化からid_itemsを削除することができます。逆に商品の賢明さについてはVisa。 –
私の条件は、私の例のようにその場所に在庫がないものを含む、1つの場所のすべての商品のリストです。私はあなたのことを試しましたが、 'id_location = 2'を追加するとすべての項目を取得できません – inumaru