![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは、ほぼ初心者ですがよろしくお願いします。
sqlite2 で以下のような倉庫テーブルと在庫数テーブルがあったとして、
手順5で、ある品物(item_id = 1)の倉庫ごとの在庫数を取得したいと思っています。
倉庫に結合する在庫データがなくても、
倉庫に対する行を取得できる SQL 文を教えていただけませんでしょうか?
※そもそもテーブルの作り方がおかしいでしょうか?
その辺も含めてアドバイスいただけるとありがたいです。
-- 以下sqlite です
.mode column
.header ON
-- 手順1 倉庫テーブル
CREATE TABLE stock_sites (
id INTEGER NOT NULL PRIMARY KEY ,
name TEXT NOT NULL
);
-- 手順2 在庫テーブル
CREATE TABLE stocks (
id INTEGER NOT NULL PRIMARY KEY ,
stock_site_id INTEGER NOT NULL,
item_id INTEGER NOT NULL,
stock INTEGER NOT NULL,
UNIQUE(stock_site_id, item_id)
);
-- 手順3、倉庫データ
INSERT INTO stock_sites(name) VALUES('site_A');
INSERT INTO stock_sites(name) VALUES('site_B');
INSERT INTO stock_sites(name) VALUES('site_C');
-- 手順4、在庫データ
INSERT INTO stocks(stock_site_id, item_id, stock) VALUES(1,1,10);
INSERT INTO stocks(stock_site_id, item_id, stock) VALUES(2,2,20);
-- 手順5 ある品の倉庫ごとの在庫数を取得したい
SELECT t1.name AS site_name, t2.*
FROM stock_sites AS t1
LEFT JOIN stocks AS t2 ON t1.id = t2.stock_site_id
WHERE t2.item_id = 1
ORDER BY t1.id;
-- 結果
-- site_name t2.id t2.stock_site_id t2.item_id t2.stock
-- ---------- ---------- ---------------- ---------- ----------
-- site_A 1 1 1 10
-- 欲しい結果
-- site_name t2.id t2.stock_site_id t2.item_id t2.stock
-- ---------- ---------- ---------------- ---------- ----------
-- site_A 1 1 1 10
-- site_B
-- site_C
No.1ベストアンサー
- 回答日時:
こう?
SELECT t1.name AS site_name, t2.*
FROM stock_sites AS t1
LEFT JOIN stocks AS t2 ON t1.id = t2.stock_site_id and t2.item_id = 1
ORDER BY t1.id;
早くに回答いただいていたのに遅くなってすみません。
結合するときに条件を複数付けるんですねぇ。
全然気が付きませんでした。
おかげさまでうまくやれそうです。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- PHP php エラー 2 2022/10/23 16:43
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL MYSQL エラー 2 2022/10/18 11:37
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
[MySQL] 3つのテーブルの結合で...
-
エクセルの関数について教えて...
-
sqlで、600行あるテーブルを100...
-
SQLサーバから、項目の属性(型...
-
上位3位を求めるSQL文は?
-
副問合せの書き方について
-
SQL Left Join で重複を排除す...
-
SQLにて特定の文字を除いた検索...
-
[MySQL] UNIQUE制約の値を更新...
-
Access パラメータクエリをcsv...
-
selectした大量データをinsert...
-
親と子供が複数のSQL取得方法
-
テーブルが5つの時の結合の仕...
-
書籍の内容はまともでしょうか?
-
クエリ表示と、ADOで抽出したレ...
-
【SQL文】Insert into文で文法...
-
VIEWの元のテーブルのindexって...
-
inner joinをすると数がおかし...
-
Mysqlでunionを使った検索速度...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
SQLサーバから、項目の属性(型...
-
副問合せの書き方について
-
VIEWの元のテーブルのindexって...
-
エクセルの関数について教えて...
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
select文のwhere句に配列を入れ...
-
sqlで、600行あるテーブルを100...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
Unionした最後にGROUP BYを追加...
-
期間の重複を調べるSQL文につい...
-
クエリ表示と、ADOで抽出したレ...
-
Access パラメータクエリをcsv...
-
PL/SQLの変数について
-
MySQLのDATE型カラム値がNULLの...
-
php+mysqlで複数選択削除について
-
上位3位を求めるSQL文は?
おすすめ情報