• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessで差分取得する方法は? LEFT JOIN エラー)

Accessで差分取得!LEFT JOINエラーを解決する方法とは?

bonaronの回答

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

あ、もしかしたらこういうことだったのかな? SELECT T2.* FROM T2 WHERE T2.class Not In (Select Distinct Class From T1) OR T2.number Not In (Select Distinct Number From T1)

関連するQ&A

  • 複数JOINしているとCOUNTが正しく取得できな

    LAMP環境で開発をしています。 SQL文でCOUNTを求める際に、まとめて結果を求めようとして上手く行きません。 状況としては以下です。 テーブルdはidをkeyにa,b,c3つのテーブルとjoinしています。 id = 1の場合、テーブルa,b,cにマッチするレコードがそれぞれに4個、1個、0個あります。 ひとつひとつを SELECT COUNT(CASE WHEN a.name IS null THEN 1 ELSE null END) as a_count FROM d INNER JOIN a ON a.id = d.id WHERE d.id = 1 として結果を求めると4,1,0と出るのですが、まとめて SELECT COUNT(CASE WHEN a.name IS null THEN 1 ELSE null END) as a_count, COUNT(CASE WHEN b.name IS null THEN 1 ELSE null END) as b_count, COUNT(CASE WHEN c.name IS null THEN 1 ELSE null END) as c_count FROM d INNER JOIN a ON a.id = d.id INNER JOIN b ON b.id = d.id INNER JOIN c ON c.id = d.id WHERE d.id = 1 とすると28,5,0という値が返されます。 どのように書けば正しい4,1,0を得られるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • LEFT JOIN とRIGHT JOINの合体版のような結合方法。

    LEFT JOIN とRIGHT JOINの合体版のような結合方法。 使用DBはMySQL5.0.45です。 2つのテーブルの結合方式で、結合条件に合致しなかった場合、 両方のデータを結果セットに含めることはできますか? LEFT JOINだと、左側のテーブルのデータは結果に返ってきて、右側のデータはNULLになります。 RIGHT JOINだと、右側のテーブルのデータは結果に返ってきて、左側のデータはNULLになります。 これを「左側データあり右側NULL」「左側NULL右側データあり」というレコードを混ぜて結果として返したいです。 具体的には、 以下二つのテーブルがあるとします。 table : test1 value  id ------------------- ああ   3 いい   4 うう     5 table : test2 value  id -------------------- AAA   1 BBB   2 CCC   3 DDD   4 id を結合条件のキーとして、以下のような結果を得たいです。 NULL  NULL  AAA   1 NULL  NULL  BBB   2 ああ   3     CCC   3 いい   4     DDD   4 うう    5    NULL   NULL LEFT JOINだと以下の結果に、 SELECT * FROM test1 LEFT JOIN test2 ON test1.id=test2.id ああ   3     CCC   3 いい   4     DDD   4 うう    5    NULL   NULL RIGHT JOINだと以下の結果になってしまいます。 SELECT * FROM test1 RIGHT JOIN test2 ON test1.id=test2.id NULL  NULL  AAA   1 NULL  NULL  BBB   2 ああ   3     CCC   3 いい   4     DDD   4 以上、ご教示お願い致します。

    • ベストアンサー
    • MySQL
  • LEFT JOIN について

    table a ------ user_id ------ user1 user2 user3 user4 user5 ------ table b --------------- user_id role_id --------------- user1 role1 user2 role1 user3 role1 user2 role2 user4 role2 --------------- とします。 1つのSQL文で、a のすべてのユーザそれぞれが指定role_id に属しているかどうかを検索したいです。 例えば、すべてのユーザそれぞれが role1 に属しているかどうかを検索します。 欲しい結果は以下の通りです。 ------------ user1 true user2 true user3 true user4 false user5 false ------------ LEFT JOIN だと思いますが、うまくいきません。 SELECT a.user_id, b.role_id FROM a LEFT JOIN b ON a.user_id = b.user_id WHERE b.role_id='role1'; 結果は以下になります。 ------------ user1 role1 user2 role1 user3 role1 ------------ #Whereで絞って、当然の結果です SQLをどうかければよいでしょうか。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLでLEFT JOIN

    MySQL4.0.26でテーブルの左外部結合がしたいです。 左テーブルAと 右テーブルBをWHERE句で抽出したもの を結合することはできないのでしょうか? 考えた以下の式ではエラーが出てしまいます。 SELECT * FROM A LEFT JOIN ( SELECT * B WHERE id = 1 ) AS B2 ON A.id = B2.id

    • ベストアンサー
    • MySQL
  • left join?で実現できそうなこのクエリを一行で書いてみたい。

    left joinについてお聞きします。一行で実現できるのかどうか、興味があります。 student | id | name | class | | 1 | aaa | 1 | | 2 | bbb | 3 | | 3 | ccc | 4 | | 4 | ddd | 3 | | 5 | eee | 1 | iinkai | id | student.id | name | meeting | | 1 | 1 | tosho | 2006-11-30 | | 2 | 2 | souji | 2006-12-02 | | 3 | 2 | siiku | 2006-12-03 | | 4 | 3 | tosho | 2006-11-30 | ルール ・studentからclassが3,4,5の生徒を抽出 ・iinkaiに所属していなくても生徒は抽出 ・所属していても、全てのmeetingが既に終わっていればいらない ・複数のiinkaiに所属している場合は、2006-12-01以降にmeetingが行われるもので直近のinnkaiを表示する 結果として欲しいテーブルは | student.id | class | iinkai.id | iinkai.name | meeting | | 2 | 3 | 2 | souji | 2006-12-02 | | 3 | 4 | null | null | null | | 4 | 3 | null | null | null | 文字数が足りません。ご教授お願いします。

    • ベストアンサー
    • MySQL
  • 少し複雑な left join

    まだデーターベースを独学で始めて数ヶ月の初心者です。 以下(3行目のleft join)の記述では動かないのですが、どのように 記述したらよいのでしょうか? やりたい内容は3行目にあるようにbookedというテーブルの中のdateが 2013-06-05だけ抽出した形のテーブルを、timeTplというテーブルとleft join させたいです。 1 "select * 2 from 3 timeTpl as t left join (SELECT * FROM booked where date ="2013-06-05") as b 4 on 5 t.start >= b.startTime and t.start < b.finishTime || 6 t.finish > b.startTime and t.finish <= b.finishTime 7 where 8 t.time > 9 (select start 10 from class as c left join member as m 11 on c.className = m.class 12 where m.name = '$name') 13 ) 14 "; よろしくお願いします。

  • 複数のテーブルに対してのleft join

    前回他の方が質問していますが、、、 T1、T2、T3、T4がありまして T1が軸のテーブルです。 その場合 select T1.a,T2.b,T3.c from T1,T2,T3 left join T4 on T1.x = T2.x and T2.xx = T3.xx and T2.xxx = T4.xxx where T4.x is null というふうなSQLを発行しようとしたのです。 しかし「onが無効」と怒られました。 ご存知の方教えてください。 HPなどご存知の方お願いいたします。 DB2/UDBです。

  • LEFT JOIN の結合結果について

    お世話になります。 ”SELECT Aテーブル.* Bテーブル.*  FROM Aテーブル LEFT JOIN Bテーブル ON Aテーブル.KEY = Bテーブル.KEY”を 行った場合、Aテーブルにしか存在しないデータのBテーブル側の値は常にNULLに なるようなのですが、この場合ゼロを固定に設定することは出来ないでしょうか? よろしくお願いします。 ※ORACLE 9i、PL/SQL上での処理を考えています

  • Access #エラーについて

    Access初心者です。 よろしくお願いいたします。 [前提]  テーブルA のIDに紐づけてクエリBの数値をクエリCで反映させたい。  〈詳細データ〉   ・テーブルA    [ID] [名称]       1   あ     2   い     3   う     4   え     5   お   ・クエリB    [ID] [数値]     2   10     3   20     5   40   ・クエリC    [ID]  [名称] [数値]     1    あ  #エラー     2    い   10     3    う    20     4    え  #エラー     5    お   40   ・”テーブルAの[ID]”の全レコードと”クエリBの[ID]”の同じ結合フィールドだけを含めてリレーションを行っている。    ・クエリCの算式: IIf(IsError([クエリB].[数値]),0,[クエリB].[数値])  [質問]    ・クエリCの『#エラー』部分を0にしたいのですが、何か良い方法はございませんでしょうか。   ・そもそも上記のロジックは無理がありますでしょうか。    アクセスはあまりいじったことがございません。ご回答いただけますと幸いです。   よろしくお願いいたします。

  • サブクエリを使用せずにLEFT JOIN + GROUP BY + ORDER BYでデータの取得

    課題テーブル: 1 課題1 Aさん 2 課題1 Bさん 3 課題1 Cさん 4 課題1 Dさん 5 課題1 Eさん 6 課題2 Bさん 7 課題2 Cさん 成績テーブル: Aさん 算数 1 Aさん 国語 2 Bさん 算数 3 Cさん 算数 2 Dさん 国語 1 目的: 課題1を算数の成績順に取得したい。 普通にLEFT JOINすると以下のようになる。 1 課題1 Aさん 算数 1 1 課題1 Aさん 国語 2 2 課題1 Bさん 算数 3 3 課題1 Cさん 算数 2 4 課題1 Dさん 国語 1 5 課題1 Eさん NULL NULL ここから名前を1つにまとめて、成績順に。 1 課題1 Aさん 算数 1 3 課題1 Cさん 算数 2 2 課題1 Bさん 算数 3 4 課題1 Dさん NULL NULL 5 課題1 Eさん NULL NULL このようにしたいのですが、名前でGROUP BYすると科目と成績の整合性がとれなくなってしまい、正しく順位づけできません。 ORDER BY CASE  WHEN 成績.科目 = '算数' THEN '0'  WHEN 成績.科目 IS NULL THEN '2'  ELSE '1' END, 成績.科目, 成績.成績 サブクエリを使わずに実行する方法は、何かないものでしょうか。

    • ベストアンサー
    • MySQL