
例えば、
[品物管理テーブル]
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLにて指定日付より前、かつ最...
-
テーブルに存在しない列をselec...
-
javaでデータベース上のテーブ...
-
SELECT 文の NULL列は?
-
2つのテーブルで引き算 postgres
-
単純なselectが遅くなるのです...
-
oracleからposgreへの移行時の...
-
mysqlのupdate構文についての質...
-
SQL*LoaderでCSVから指定した列...
-
Oracleで上書きImportはできま...
-
AccessのSQL 部分一致したデー...
-
降順で並び替えて昇順で受け取...
-
外部キーだけのテーブル(主キ...
-
Accessでデータシートに同じデ...
-
「クリップボードにコピーされ...
-
会社の飲み会の幹事になり、座...
-
「テーブルに座って……」という...
-
取数計算
-
SQL、2つのテーブルで条件一致...
-
テーブルで一番古いレコードだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文の NULL列は?
-
SQLにて指定日付より前、かつ最...
-
テーブルに存在しない列をselec...
-
SQLでUPSERTを一度に複数行やる...
-
単純なselectが遅くなるのです...
-
javaでデータベース上のテーブ...
-
PostgreSQLの断片化の状況を確...
-
テーブルにcsvファイルをインポ...
-
2つのテーブルで引き算 postgres
-
MS Access から PostgreSQL へ...
-
テーブル定義書作成時のIndex付...
-
デットロック回避策(autocommit...
-
PostgreSQL レコードからアイテ...
-
Postgresのデータ領域の拡張に...
-
複数テーブルにまたがるmax
-
テーブルを作ろうとしたら。
-
COPYコマンドによるTEXT取り込...
-
postgreSQL カラムの全ての値を...
-
ワークテーブル(ローカル)か...
-
UPDATE文の更新順序について
おすすめ情報