• 締切済み

ACCESS 結合ができません。

祖母が句会に入っていて、私はACCESSを触っているだけなのですが、祖母の周囲にパソコンを使える人が居ないため、頼まれました。 プログラムの変更なのですが、ACCESSを作った人は退会されているので、困り果てております。 ・現在の時間帯が、第2希望まで選べているが、それが第5希望まで選べるようになった。 ・テーブル「T時間M」から「T時間M-4」まであり、-2からは、第2希望から参照している。 クエリの構造については、画像で添付しましたが、仮名に変更してあります。 コードについては、SQLで組まれており、LEFT JOINとなっていますが、3つ以上の結合を行うと、フォームでは「Name?」となってしまいます。 コードの記述についてですが、SQLの構文部分を書き出します。 SQL = "SELECT T会員M.名前," _ & "T男女M.男女, T会員M.年齢, [T時間M.項目C] &" _ & " T時間M.回数 AS 第1, T会員M.当落1," _ & " [T時間M_1.項目C] & T時間M_1.回数 AS 第2, T会員M.当落2" _ & " FROM T時間M INNER JOIN (T男女M INNER JOIN (T会員M LEFT JOIN T時間M AS T時間M_1 ON" _ & " T会員M.第二希望時間CD = T時間M_1.時間id) ON T男女M.男女C = T会員M.男女C) ON" _ & " T時間M.時間id = T会員M.第一希望時間CD " _ この後の記述は & "WHERE ~省略 & " ORDER BY  ~省略 Me.RecordSource = SQL となっています。

みんなの回答

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

Name?とあるので フィールド名が特定できてない?、同じ名称がある?、は確認しましょう。 第2とか当落2、をコピーして第3とか当落3、にすべきところが第2とか当落2、のままだとか。 2つから3つ、3つができたら4つ、さらに5つと確認しながらでもよいです。

関連するQ&A

  • Accessの内部結合

    こんにちは。 Accessでcateテーブルとgoodsテーブルがあります。 select * from goods inner join cate on goods.cateid = cate.id; クエリデザインで、テーブルとテーブルを結合して上記のようなSQLができました。 これは動作することを確認しました。 SQLビューで下記のようなSQLを書きました。 select * from goods inner join cate on left(goods.cateid,5) = cate.id; しかしながら、動きませんでした。 VBAを使わずに、Accessの標準のクエリデザインから上記のようなSQLを実行させることは可能でしょうか? クエリデザインでselect left(cateid,5) as cateid from goodsというTESTクエリをつくり、TESTクエリとcateテーブルとジョインさせれば解決しそうなことはわかるのですが・・・ 宜しくお願いします。

  • Accessの表結合SQL

    AccessのSQLで外部結合を複数使うと SQLがエラーになります。 クエリで確認してエラーにならない様につくってみましたが、意図する事をやろうとするとエラーになります。 どこが悪いか教えていただけませんか?おそらくSQLサーバーでは余裕で通るSQLだと思うのですが。。。 SQL = SELECT * FROM T1 LEFT JOIN T2 ON T1.A = T2.A LEFT JOIN T3 ON T1.B = T3.B LEFT JOIN T4 ON T1.C = T4.C AND T4.D = iNum WHERE T1.E = 'iNum' やりたいのはT1を基準にT2,T3,T4からデータを引っ張ってきたい。その条件としてT4から引っ張ってくるのは T4.DがiNumである事、基準となるT1のT1.EがiNumである事です。 Accessでは"AND T4.D = iNum"がだめで、 WHERE区に書くと外部結合にもかかわらずT4.D = iNumのデータしか抽出されなくなる。(T1.C = T4.CのデータがT4.D = iNumでなくてもT1のデータが抽出されなくてはならない。) さらに SQL = SELECT * FROM ((T1 LEFT JOIN T2 ON T1.A = T2.A) LEFT JOIN T3 ON T1.B = T3.B) LEFT JOIN T4 ON T1.C = T4.C AND T4.D = iNum WHERE T1.E = 'iNum' こんな括弧が必要になってくる。 これだとT1とT2を外部結合した結果をT3と外部結合して さらにその結果をT4と外部結合しているという意味あいになってしまって、意図が違うのですが。。 結果は同じなのでAccessに譲ってやってもいいのですが 前者はT1で抽出されなければならないデータが抽出されないので困ります。 よろしくお願いいたします。

  • テーブル結合について

    SQL Serverで、メイン、サブ1、サブ2、サブ3、サブ4というテーブルがあり、以下のSQLを実行すると、メインにあるすべてのデータ(10列)が抽出されます。 SELECT * FROM メイン INNER JOIN サブ1 ON メイン.name1=サブ1.id INNER JOIN サブ2 ON メイン.name2=サブ2.id INNER JOIN サブ3 ON メイン.name3=サブ3.id しかし、上記のSQL文に追加して、 SELECT * FROM メイン INNER JOIN サブ1 ON メイン.name1=サブ1.id INNER JOIN サブ2 ON メイン.name2=サブ2.id INNER JOIN サブ3 ON メイン.name3=サブ3.id INNER JOIN サブ4 ON メイン.name4=サブ4.id とすると、メイン内の10列のうち、2列しか抽出されません。 サブ4を結合しても、一つ目のSQL文と同じ結果を抽出したかったのですが、どこがおかしいのでしょうか? SQL文がまずいのか、サブ4のテーブル内容のせいなのか、SQL Serverの設定がおかしいのか、さっぱり見当がつきません。 足りない情報がありましたら補足いたしますので、どうぞよろしくお願いします。

  • 複数テーブルの結合

    マスターテーブル1つと、子テーブルが複数存在して子テーブルにはマスターテーブルのidを格納するフィールドがあり参照しなくなったときにはそのidを消去するといったデータベースがあったときにマスターIDごとに子テーブルのどれか1つでも参照していればカウントするみたいなSQLをつくりたいんですが select count(m.id) from master m inner join a on m.id = a.m_id inner join b on m.id = b.m_id inner join c on m.id = c.m_id group by m.id みたいなSQLだとAにデータが存在しなければB以降に存在しても期待した結果が出力されません。A、B、Cいずれかのm_idとマスター側のIDが等しければカウントするという出力をするためにはどのように書けばいいんでしょうか。 わかりづらい説明で申し訳ありませんがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQL文の変換(Oracle→MySQL)結合句

    OracleからMySQLへSQL文を変換するにあたり、 テーブル結合部分が複数ありややこしくて以下で合っているのか、分かる方いましたらご教授ください。 ■Oracle  SELECT *  FROM m, h, p, c  WHERE m.mid = h.mid(+)  AND m.tcd = '0'  And h.pid = p.pid(+)  And m.rcd = c.rcd  And c.cid = 'aaa' ■MySQL  SELECT *  FROM m left outer join h on m.mid = h.mid and m.tcd = '0'     h left outer join p on h.pid = p.pid     m left inner join c on m.rcd = c.rcd and c.cid = 'aaa'

    • ベストアンサー
    • MySQL
  • テーブルを結合

    テーブルの結合に関して質問します。 ネットなどでinner joinを使った複数のテーブル結合が参考として 書いてあったのですが(3つまで), 4つテーブルを結合する事は 出来るのでしょうか? A,B,CテーブルにはID,NAMEがあります。 DテーブルにはA,B,CテーブルのIDがあります。 参考サイトを見て3つのテーブルを結合するSQLが以下になります。 SELECT a.name, b.name, c.name FROM a INNER JOIN (b INNER JOIN c ON b.id = c.id) ON a.id = c.id よろしければアドバイスお願いします。

  • データーベースの結合について

    はじめまして。 先日異動で新しい職場につき、マイクロソフトアクセスを使用し始めたド初心者です。 早速ですが教えてください。 使用しているアクセスは2000です。 http://okweb.jp/kotaeru.php3?q=246849 ↑にて参考にさせていただきましたが、 SELECT * FROM メイン INNER JOIN サブ1 ON メイン.name1=サブ1.id INNER JOIN サブ2 ON メイン.name2=サブ2.id INNER JOIN サブ3 ON メイン.name3=サブ3.id のようにテーブルを4つ結合したいのです。 現在、2つのテーブルを結合することはできましたが、 3つ以上のテーブルの結合ができずに困っています。 上記のようにやってみると 「構文エラー:演算子がありません」と表示されます。 .ASPという拡張子のものですがそれがいけないのでしょうか? (正式には SQL = "SELECT * FROM メイン INNER JOIN サブ1 ON メイン.name1=サブ1.id" と、1行で書かないと認識しません SQL = "SELECT * FROM メイン INNER JOIN サブ1 ON メイン.name1=サブ1.id INNER JOIN サブ2 ON メイン.name2=サブ2.id INNER JOIN サブ3 ON メイン.name3=サブ3.id" とするとエラーになります。 ) 以前、勤めていた方の仕事を引き継いだのですが聞ける人もいないので途方にくれています。 質問自体がおかしいかもしれませんがどうぞ初心者にも理解できる回答をよろしくお願いします。

  • Access2007で、5つのテーブルを結合したい

    Access2007のSQLで質問です。「ユーザが選んだレンタカー営業所に所属する車と、その借主、レンタル日、レンタル期間」を一覧で表示するクエリーを制作しています。 テーブル ■Customer -CustomerID(主キー) -FirstName -LastName ■Book -FK_CustomerID(複合キー) -FK_CarNo(複合キー) -Date -Duration ■Car -CarNo(主キー) -Model ■Own -FK_CarNo(複合キー) -FK_LocationNo(複合キー) ■Location -LocationNo(主キー) -LocationName ------------------------------------------------------------------- LocationNameの中から指定したLocationが保有するCarのBookすべてを表示するクエリーを作りたいです。 クエリーが生成するアウトプットは、CarNo, Model, FirstName, LastName, Date, Duration, です。 以下のSQLを作ってみましたが、"syntax error missing operator.."と表示されてしまいます。 SELECT c.CarNo, c.Model, cs.FirstName, cs.LastName, b.Date, b.Duration FROM Location l INNER JOIN ( ( (Own o INNER JOIN Car c ON o..FK_CarNo = c.CarNo l.LocationNo) INNER JOIN Book b ON c.CarNo = b.FK_CarNo) INNER JOIN Customer cs ON b.FK_CustomerID = cs.CustomerID) ON l.LocationNo = o.FK_LocationNo WHERE l.LocationName =:user_input ;

  • JOINのネスト制限?

    基本的な問題かもしれませんが、SQLのJOINの使い方が判らないので教えて下さい。 SQLで A表とB表とC表をINNER JOINした表に対して、 D表をOUTER JOINした結果に対して、E表をINNER JOINしたいのですが、 SQL文で書くことは可能でしょうか? SELECT ((((cols FROM A INNER JOIN B ON --) INNER JOIN C ON --) OUTER JOIN D ON --) INNER JOIN E ON --) と単純に書くとネスト数のオーバーなのかエラーが出ます。 後ろの部分だとサブクエリーに対してJOINすればよいかもしれませんが、主ファイルに当る部分の場合はサブクエリーに切り出す方法が判りません。 よろしくお願いします。

  • テーブルの結合について質問です。

    テーブルの結合について質問です。 テーブル名:SHOSAI SELECT T1.TIMESTAMP AS 登録, T1.UPDATE AS 更新, T2.CONTENT AS コード, . . . FROM SHOSAI T1 LEFT OUTER JOIN X_CODE T2 ON T1.Y_CODE = T2.CODE テーブル名:SHOSAI SELECT T1.TIMESTAMP AS 登録, T1.UPDATE AS 更新, T2.CONTENT AS コード, T1.BANGO AS 番号, T3.CONTENT AS 曜日, . . . FROM JOHO T1 LEFT OUTER JOIN X_CODE T2 ON T1.Y_CODE = T2.CODE LEFT OUTER JOIN H_CODE T3 ON T1.J_CODE = T3.CODE . . . この2つのテーブルを結合したいのですが それぞれのデータ数が300あり SELECT*で呼びだしてもCSEはエラーとなってしまいます。 項目名を選定してプログラムを組んでもうまくできません。 良い方法があれば教えてください。

    • ベストアンサー
    • MySQL

専門家に質問してみよう