• ベストアンサー

Microsoft Access のSQL文

こんばんは  よろしくお願いします。 今、J1出場とJ2出場の合計が100以上の選手名とJ1出場,J2出場を抽出 という問題を解いているのですが、この答えとして、 SELECT 選手名,J1出場,J2出場 FROM 選手一覧 WHERE ('J1出場' + 'J2出場') >= 100 というのを打ちました。 しかし、抽出条件においてデータ型が一致しませんというエラーメッセージがでてしまい困っています。 だれかご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

まずは WHERE ('J1出場' + 'J2出場') >= 100 の ’ を取り除いて WHERE (J1出場 + J2出場) >= 100 にしてみてください。

tatsunami
質問者

お礼

早速のご回答ありがとうございます。 おかげさまでできました!! このばあい ' をつけちゃうと文字列と判断されてしまうからエラーが出るのですか?よろしければおしえていただきたいのですが・・・。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

> ' をつけちゃうと文字列と判断されてしまう フィールド名・変数名は「入れ物の名前」であって、その値ではありません。 演算なさりたいのは「入れ物の中身」ですので、「そのとおり」です。 #2さんのご指摘のとおり、日本語(漢字)名の場合は[]で囲む癖をつけると良いかも(自動で付与されはしますが)

tatsunami
質問者

お礼

は・早い・・・。 やっぱり文字列(「入れ物の名前」)として判断されてしまうんですね・・・う~んムズカシイです。まだ参考書片手に一文字一文字うってる段階なんで(笑) これからもよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • NNori
  • ベストアンサー率22% (377/1669)
回答No.2

'J1出場' では 文字列になっちゃいます。文字列と文字列を+(結合)して100という整数と比べているのでエラーになってます。 アクセスの場合フィールド名を示したければ [J1出場] とやるのでは?

tatsunami
質問者

お礼

こちらも早い回答本当にありがとうございます。 おがさまで回答者様の方法でもできました! でも、問題では [ ] の括弧は使えないんですよね・・・。 でも、違うやり方を教えていただけて本当によかったです。 またよろしくお願いします。 まだ5・6問残ってるんで・・・(笑)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • InformixのSQL文Where句で

    マイナーなRDBS(?)なので回答をいただけるか不安ですが… InformixのSQL文(単純なSELECT文)で、以下のような 文の場合、検索条件はどのような解釈になるのでしょうか? select  count(*) from  テーブル名 where  カラム名 = ? です。 要は「?」が何を示すのかが分からないのです。 matches(Oracleでいうlike)の場合、Oracleの%が*に、 _(アンダースコア)が?になるらしいのですが、 = で完全一致で繋いださいにどうなるのかが分かりません。 ちょっとした情報でもよいので、ご教授お願い致します。

  • たびたび失礼します。

    以下の問題の答えがまったくわかりません。 【全選手の最高身長と最低体重、平均J1出場をそれぞれ最高身長、最低体重、平均J1出場という列名で抽出】 下のようにSQLを記述しました。 SELECT 選手名,MAX(身長) AS 最高身長,MIN(体重) AS 最低体重,AVG(J1出場) AS 平均J1出場 FROM 選手一覧 GROUP BY 選手名,身長,体重,J1出場 すると各選手の身長・体重・J1出場が最高身長、最低体重、平均J1出場という列名ですべて出てきてしまいます。 なにが違うのでしょうか。

  • SQL文について

    商品表と注文表から、注文のある商品名を知るためのSQL文で、適切なものはどれか。 商品表(商品番号,商品名,単価) 注文表(注文番号,商品番号,注文数) 答えはこれ↓なんですが、なぜなのか分かりません。 SELECT 商品番号,商品名 FROM 商品表        WHERE EXISTS (SELECT * FROM 注文表 WHERE 商品番号 = 商品表.商品番号)

  • SQL文について

    OracleやSQLについてはまだ初心者のレベルで理解が浅いので言葉足らずかもしれませんがよろしくお願いします。 以下のようなテーブル(名称:TBL)があったとします。 SHOP_CODE------SHOP_NUMBER----MONEY1------MONEY2 A ---------------- 1 ---------------- 100 ------------- 200 B ---------------- 2 ---------------- 300 ------------- 400 C ---------------- 3 ---------------- 500 ------------- 600 D ---------------- 4 ---------------- 700 ------------- 800 例えば、SHOP_CODEがA~Dのどれかの行(レコード)はそのまま抽出して、残った行(レコード)はMONEY1およびMONEY2を0に変更して抽出しようとした場合、 SELECT * FROM TBL WHERE SHOP_CODE = 'ここはA~Dのどれかを代入' UNION SELECT SHOP_CODE, SHOP_NUMBER, 0, 0 FROM TBL WHERE SHOP_CODE <> 'A~Dのどれかを代入' このようなSQL文を考えてみました。 しかし、比較的簡単な例ならばよいのですが、UNION前のSELECT文が複雑になってきた場合のことを考え以下のような文の作りかたができないかと思いました。 SELECT * FROM TBL WHERE SHOP_CODE = 'ここはA~Dのどれかを代入'・・・『この時点で抽出した塊になんらかの名称をつける(例:tbl)』 UNION SELECT SHOP_CODE, SHOP_NUMBER, 0, 0 FROM TBL WHERE SHOP_CODE <> tbl.SHOP_CODE・・・『このようにUNION以前に抽出した塊の名称を利用して条件を作成』 このような方法ができるとした場合、前段階で抽出した塊にどのような方法で名称をつけるのか分かりませんでした。(汗)そもそもできるかどうかもわかりませんが、、、(^^; 最初のSQL文がベターな方法なのかも分かりませんが、上記に示した方法で抽出することが可能でしょうか?もしできるのならば、前述したように名称をつけて条件を作成する方法等を教えていただきたいと思います。 おおよそ話を分かっていただければよいのですが、ものすごく簡単に言うと一つのテーブルのある行とある行に別々の処理をして再構成したいというようなイメージです。(今回はMONEYを0にすると仮定しました) できれば上記の方法に沿った考えで回答をいただけると私も助かりますが、もっと良い方法があれば是非伺いたいと思います。お時間の方ありましたらよろしくお願いします。

  • SQL文について

    テーブルの結合について教えてください。 (DBはオラクルです) select * from table1,table2 where table1.カラム名=table2.カラム名; で、結合が出来ることは分かりました。 やりたいことはテーブルの結合と、ある期間のデータを持ってきたいのです。 select カラム名 from table1 where カラム名 between '20020213' and '20020218'; で期間を決めて引き出すやり方も分かっています。 一度に結合と期間を決めて引き出すやりかたってどうすればよいですか? それとも不可能ですか? 教えてください。

  • SQL文について困っています

    ID(NUMBER型)と NUM(NUMBER型)と nenngetu (date型)を持ったテーブルAAAから、 ID=1000 のなかで日時が一番古い処理NOをselectするSQL文を書きましたが上手く実行されません。 select NUM from AAA where nenngetu = (select min(nenngetu) from AAA) and ID=1000; ID=1000の条件をはぶき、 select NUM from AAA where nenngetu = (select min(nenngetu) from AAA); でしたら、実行できました。 oracleで実行しようとしています。 どなたか、書き方を教えてください。

  • SQL文で

    SQLのWHEREの条件文の中に、「(+)」というのがあるのですが、 どういう意味なのでしょうか? select * from Office WHERE a.Office_cd=b.Office_cd(+) といった感じですが。 よろしくお願いします。

  • ACCESSのSQL文

    ACCESSのSQL文 いつもお世話になります。 SQL文でテーブルのデータを抽出したいのですが上手くいきません。 Dim rs4 As ADODB.Recordset Dim cmdrs4 As New ADODB.Command Set cmdrs4.ActiveConnection = CurrentProject.Connection a = "SELECT 管理NO" & " FROM マスタ" If strFlter = "" Then a = a & ";" Else a = a & " WHERE " & strFlter & ";" End If cmdrs4.CommandText = a Set rs4 = cmdrs4.Execute() MsgBox rs4.GetString aの内容は a = "SELECT 管理NO FROM マスタ WHERE 管理NO Like ""*2*"";" 実行すると、rs4.GetString文で下記エラーが出ます。 「BOFとEOFのいづれかがTrueになっているか、または現在のレコードが削除されています。 要求された操作には、現在のレコードが必要です。」 aを "SELECT 管理NO FROM マスタ WHERE 管理NO = ""2-6"";" なら問題ありません。 Likeの使い方が悪いのでしょうか? よろしくお願いします。

  • SQL文について質問させて頂きます。

    いつもお世話になっております。いろいろSQL文の本を読んだのですがわからないので今回もよろしく お願い致します。 SELECT DISTINCT * FROM bukken WHERE (id IN (SELECT fid FROM fudou_kodawari WHERE kid IN (1,4))) というSQL文があるのですが、これだと1,4が1つでも含まれるリストが出てくるのですが1,4が完全に一致しないと出てこないようにするにはどのようにSQL文を変更すれば良いのでしょうか? 何卒よろしくお願い致します。

  • SQL文で困っています。

    ID(NUMBER型)と NUM(NUMBER型)と nenngetu (date型)を持ったテーブルAAAから、 ID=1000 のなかで日時が一番古い処理NOをselectするSQL文を書きましたが上手く実行されません。 select NUM from AAA where nenngetu = (select min(年月) from D_KR_SAP_IFRIREKIKANRI) and ID=1000; ID=1000の条件をはぶき、 select NUM from AAA where nenngetu = (select min(年月) from D_KR_SAP_IFRIREKIKANRI); でしたら、実行できました。 oracleで実行しようとしています。 どなたか、書き方を教えてください。

このQ&Aのポイント
  • 友人からの告白:友人AとBの関係に変化
  • 友人Bから友人Aの嫌いな理由を聞かれた
  • 友人AとBとの関係にどう向き合うか悩んでいる
回答を見る