質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

2520閲覧

WHERE句で指定した行が'Invalid column name'とエラーになることについて

trafalbad

総合スコア303

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/06/13 08:36

編集2018/06/15 05:14

下記のSQLでウィンドウ関数で指定した行名'king'を
BETWEENで指定したところ、下記のようなエラーになりました。

sql

1Error running query: Invalid column name 'king'.DB-Lib error message 20018, severity 16: General SQL Server error: Check messages from the SQL Server DB-Lib error message 20018, severity 16: General SQL Server error: Check messages from the SQL Server DB-Lib error message 20018, severity 16: General SQL Server error: Check messages from the SQL Server DB-Lib error message 20018, severity 16: General SQL Server error: Check messages from the SQL Server 2 Embed 3Download Dataset

原因をご教授いただけないでしょうか?ちなみにmysqlです。
また質問の大幅な変更申し訳ありません

sql

1WITH bcr AS 2(select mb.brand_id, mb.name_eigo, s.model_id, model.name_eigo model_name_eigo, 3 mc.cate_id, mc.cate_name, s.cnt 4from ( 5SELECT ms.brand_id, ms.model_id, ms.cate_id,count(ms.syo_id) cnt 6FROM M_SYOHIN ms (NOLOCK) 7JOIN M_KAIIN mk (NOLOCK) 8ON ms.buyer_id = mk.kaiin_id 9left outer join M_SYOHIN_MODEL msm 10on ms.model_id=msm.model_id 11WHERE ms.kokaidate >= '2008-06-10' AND (msm.deleted IS NULL or msm.deleted='0') 12AND NOT EXISTS (SELECT 1 FROM D_REQRES res (NOLOCK) WHERE res.syo_id = ms.syo_id) 13AND NOT EXISTS (SELECT 1 FROM D_DELEGATE_RES res (NOLOCK) WHERE res.syo_id = ms.syo_id) 14AND mk.status = '1' AND ISNULL(mk.syupin_limit, '0') = '0' AND mk.blacklist = '0' 15AND ms.thm_id <> '136' -- USED商品のテーマは除く 16group by ms.brand_id, ms.model_id, ms.cate_id 17) s 18left outer join M_BRAND mb 19on s.brand_id = mb.brand_id 20left outer join M_CATEGORY mc 21on s.cate_id = mc.cate_id 22left outer join M_SYOHIN_MODEL model 23on s.model_id = model.model_id 24WHERE mb.yuko_flg='0' 25) 26 27SELECT TOP 10 bcr.brand_id, 28 bcr.model_id, 29 bcr.cate_id, 30 bcr.cnt, 31 ms.syo_id, 32 image.url, 33 RANK() OVER(ORDER BY bcr.cnt DESC) AS king 34FROM M_SYOHIN ms (NOLOCK) 35JOIN M_KAIIN mk (NOLOCK) ON ms.buyer_id = mk.kaiin_id 36JOIN M_SYOHIN_IMAGES image (NOLOCK) ON ms.syo_id = image.syo_id 37INNER JOIN bcr ON ms.brand_id=bcr.brand_id 38AND ms.model_id=bcr.model_id 39AND ms.cate_id=bcr.cate_id 40WHERE king > 100 AND king < 102 41 AND ms.kokaidate >= '2008-06-10' 42 AND NOT EXISTS (SELECT 1 FROM D_REQRES res (NOLOCK) WHERE res.syo_id = ms.syo_id) 43 AND NOT EXISTS (SELECT 1 FROM D_DELEGATE_RES res (NOLOCK) WHERE res.syo_id = ms.syo_id) 44 AND mk.status = '1' AND ISNULL(mk.syupin_limit, '0') = '0' AND mk.blacklist = '0' 45 AND ms.thm_id <> '136' -- USED商品のテーマは除く 46 AND 1.00 <= king AND king >= 3.00 47ORDER BY bcr.cnt desc

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/06/13 08:57

プロシージャってmysqlのストアド・プロシージャのことですか?そうでなければ使用している言語タグを明示して下さい。
trafalbad

2018/06/13 09:16

はい、mysqlです。よろしくお願いします
yambejp

2018/06/13 09:31

例示のサンプルがプロシージャの体をなしていないようですが、なにか特殊な情報なのでしょうか?くわえてテーブルの情報もよくわからないので変数の使い所も提示されていないように見えるので質問がうまくつたわってきません。結局何をどうしたいのでしょうか?
trafalbad

2018/06/13 10:34 編集

ウィンドウ1でウィンドウ2の変数であるmodel, cate, brandの3つが定義されます。その変数の条件をもとに、ウィンドウ2でさらにデータを抽出したいんです。ウィンドウ1の変数の内容を維持しつつ、ウィンドウ2でデータを抽出したいです。 つまり、ウィンドウ1の3つの変数をウィンドウ2のように簡易的に表示するのではなく、ウィンドウ1の内容をプロシージャとして指定することはできないでしょうか?
yambejp

2018/06/13 10:39

ウィンドウという単位がよくわかりません。プロシージャはcreate procedureで作成するものですが・・・
trafalbad

2018/06/13 10:46

言葉足らずですみません。ウィンドウとはブラウザの画面のことを言いました。今調べたのですが、ウィンドウ1のsplをサブクエリとしてウィンドウ2のfromに埋め込むようことと同じでした。
sazi

2018/06/13 10:53

webのシステムだと思いますが、開発言語とフレームワークが何か分かりますか?
guest

回答1

0

ベストアンサー

rank()はMysqlではサポートしていません。
また、with はmysql8.0以降です。

rank()に関してはググれば色々出てきます。
MySQLで高速にランキングを求める
mysqlだけでランキングしてみる(同率考慮)
MySQLでランキングを取得する方法

投稿2018/06/15 05:21

編集2018/06/15 05:56
sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

trafalbad

2018/06/15 05:49

mysqlでrank関数の代わりになる関数や処理はないでしょうか?
sazi

2018/06/15 09:56

追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問