例えば、
[品物管理テーブル]
cd:name
01:スナック菓子
02:ジュース
03:アイス
04:ガム
・
99:その他
と
[店舗別売り上げランキング管理テーブル]
shop:no1:no2:no3
A店: 03: 01: 04
B店: 01: 02: 04
C店: 02: 01: 03
D店: 02: 01:null
があった場合に
A店の売り上げ順に[品物管理テーブル]のcdとnameを取得したい場合は
どのようにすればよいのでしょうか?
SELECT cd, name
FROM [商品管理テーブル] AS syo
LEFT JOIN [店舗別売り上げランキング管理テーブル]AS ran
ON syo.cd=ran.no1 OR syo.cd=ran.no2 OR syo.cd=ran.no3
WHERE ran.shop='A店';
とすると、ランキングを無視して[品物管理テーブル]の順で
01:スナック菓子
03:アイス
04:ガム
と返ってきてうまくいきません。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
品物管理テーブル・・・・t1
店舗別売り上げランキング管理テーブル・・・t2
とします。
以下でどうでしょうか?
select shop,no as 店内順位,cd,name from (
select shop,1 as no,no1 as rk from t2
union all
select shop,2 as no,no2 as rk from t2
union all
select shop,3 as no,no3 as rk from t2
) as v left join t1
on v.rk = t1.cd
order by shop,no
No.1
- 回答日時:
ここはPostgreSQLのカテゴリなのですが、使用しているRDBMSは合っていますか?
表名、列名などが予約語と一緒だったり、特殊文字を含んでいる場合でも名称として使用できるように
[テーブル1]
[カラム1]
といった囲み方をするのは、SQL ServerやMS-ACCESSなど、マイクロソフト製品の独自仕様なのですけど?
具体的なSQLを提示する上で、便宜上、囲っているだけですか?
>ランキングを無視して[品物管理テーブル]の順で
「ランキング順で返して」とSQLで指定していないのですから、返って来る順序は不定(RDBMSの内部処理や物理的な格納位置などによって、どうなるか分からないし、RDBMS側で保証もされない)です。
これは、標準SQLの規格上もそうだし、殆どのRDBMSによる実装でも同じです。
返って来る順序を保証させたいなら、「order by」で明示的に指定してください。
早々の回答ありがとうございました。
テーブルを[]で括っているのは、テーブルとカラムを分かりやすく分けたかっただけです。
また、ORDER BYは試しましたが、希望する戻り値ではありませんでした。
SELECT cd, name
FROM [商品管理テーブル] AS syo
LEFT JOIN [店舗別売り上げランキング管理テーブル]AS ran
ON syo.cd=ran.no1 OR syo.cd=ran.no2 OR syo.cd=ran.no3
WHERE ran.shop='A店'
ORDER BY ran.no1, ran.no2, ran.no3;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Oracle SQL update方法 2 2022/06/22 14:07
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- その他(データベース) accessについて 2 2022/05/31 16:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルに存在しない列をselec...
-
SQLにて指定日付より前、かつ最...
-
PostgreSQLの断片化の状況を確...
-
SELECT 文の NULL列は?
-
デットロック回避策(autocommit...
-
最新レコードを抽出し外部結合...
-
2つのテーブルで引き算 postgres
-
SQLでUPSERTを一度に複数行やる...
-
LASTVAL()の使い方
-
MS Access から PostgreSQL へ...
-
単純なselectが遅くなるのです...
-
SQLServerでの複数テーブルから...
-
SQLです教えてください。
-
オーダーの覚え方について
-
SQL、2つのテーブルで条件一致...
-
Accessでデータシートに同じデ...
-
sqlplusで表示が変なので、出力...
-
「テーブルに座って……」という...
-
アクセスのリンクテーブル一覧...
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文の NULL列は?
-
テーブルに存在しない列をselec...
-
SQLにて指定日付より前、かつ最...
-
SQLでUPSERTを一度に複数行やる...
-
単純なselectが遅くなるのです...
-
PostgreSQLの断片化の状況を確...
-
javaでデータベース上のテーブ...
-
2つのテーブルで引き算 postgres
-
Postgresのデータ領域の拡張に...
-
最新レコードを抽出し外部結合...
-
UPDATE文の更新順序について
-
テーブルを作ろうとしたら。
-
reindex と update のデッドロック
-
Postgresqlのレポート機能について
-
レコードを1件のみ取得した後...
-
テーブルにcsvファイルをインポ...
-
フィールドの入れ替えはできま...
-
重複を許すキーの構文がわかり...
-
PostgreSQL 8.0.2 の ERROR: r...
-
バキューム処理の実行時間の目安
おすすめ情報