• 締切済み
  • すぐに回答を!

mysqlのsql文について教えて下さい

mysqlのsql文について教えて下さい 下記のようなテーブルとデータがあった場合に どうやれば 2,次郎だけを抽出できますか? 本日日付(2010-08-06)が 既にテーブルBにdateが存在する場合は 3,1,2010-08-04 3,1,2010-08-06を 対象外にしたいです。 Aテーブル id,user 1,太郎 2,次郎 3,3郎 Bテーブル targetid,homonid,date(datetime型) 3,1,2010-08-04 3,1,2010-08-06 3,2,2010-08-05 下記だと2010-08-04にヒットしてしまい(当たり前?)動作しません。 select distinct a.* from tblA a, tblB b where date_format(b.date, "%Y-%m-%d") <> "2010-08-06" ;

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数33
  • ありがとう数5

みんなの回答

  • 回答No.1
  • yambejp
  • ベストアンサー率51% (3827/7415)

見る限りtblAとtblBをリレーションする条件が書かれていませんが?

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 次のデータ抽出を(高速に)行うSQLを教えてくださ

    自分がフォローしている人のつぶやきと、じぶんの呟きを含めて、日付順で表示するSQLを検討しています。 MYSQLの構文がかなり複雑になってしまったために、 もっと簡単に高速にSQLで記述する方法がありましたら教えて頂けませんでしょうか。 長文になり申し訳ございませんが、アドバイスいただけると幸いです。 テーブルは以下の3種類です。 ●cutomer:登録者名を記録 <構造> id(auto increment,key),name(名前) <サンプルデータ> 0,"太郎" 1,"次郎" 2,"三郎" 3,"四郎" ●follow:誰が(my_user_id)、誰をフォローしているか(target_user_id)を記録 <構造> id(auto increment,key),my_user_id,target_user_id <サンプルデータ> 0,1,0 0,1,2 ●tweet:つぶやきを記録 <構造> id(auto increment,key),user_id,tweet_comment(つぶやき),date(つぶやき日時) <サンプルデータ> 0,1,"次郎のつぶやきです","2011-01-01 00:00:00" 1,2,"三郎のつぶやきです","2011-02-01 00:00:00" 2,0,"太郎のつぶやきです","2011-03-01 00:00:00" 3,1,"次郎のつぶやきです","2011-04-01 00:00:00" 4,3,"四郎のつぶやきです","2011-05-01 00:00:00" 上記のサンプルデータを用いて、期待する出力結果をご説明します。 例として、入力値を「次郎」とすると、 「次郎」のつぶやきと、次郎がフォローしている太郎と三郎の呟きを表示したいです。 "次郎","次郎のつぶやきです","2011-01-01 00:00:00" "三郎","三郎のつぶやきです","2011-02-01 00:00:00" "太郎","太郎のつぶやきです","2011-03-01 00:00:00" "次郎","次郎のつぶやきです","2011-04-01 00:00:00" 現状は、次郎とつぶやきselectと、次郎がフォローする太郎と三郎のつぶやきselectを unionで結合する形式なっており、もうちょっと賢くできないものかと悩んでいます。 なお、対象の次郎のuser_id(サンプルでは"1")は予めわかっているものとします。 ( select customer.name,tweet.tweet_comment,tweet.date from customer,tweet where customer.id = 1 and customer.id = tweet.user_id ) union ( select customer.name,tweet.tweet_comment,tweet.date from customer,tweet,follow where follow.my_user_id = 1 and follow.target_user_id = tweet.user_id and tweet.user_id = customer.id ) order by table_tweet.date asc

    • ベストアンサー
    • MySQL
  • 3つのテーブルを結合させたSQL文について

    3つのテーブルを結合させたSQL文について作成方法を教えてください。 よろしくお願いいたします。 【テーブル構成】 テーブル名---項目名/項目名・・・です。 tblA---id/del_flg/name tblB---id/del_flg/add tblC---id/del_flg/family 各テーブルはidによりリンクされます。 tblAのdel_flgは在籍者=0 退職者=1で、一人1レコードです。 tblBでは住所管理をしています。 旧情報を残したいので、更新時には新たにdel_flg=0でレコードを作成し、既存レコードはdel_flg=1に更新します。 tblCは、既婚者のみ作成されるレコードです。 つまり、tblBとtblCは、レコードが存在しない、あるいはdel_flg=0のみ、del_flg=0とdel_flg=1が混在 のどれかのパターンになります。 【やりたいこと】 いま、これらすべてのテーブルを全部つなげて、在籍している人の情報だけ集めたいのです。 tblAからはdel_flg=0のレコードをすべて取得したうえで、tblBとtblCにdel_flg=0のレコードがあればその情報も取得したい。 【経過】 select * from (tblA inner join tblB on tblA.id = tblB.id ) inner join tblC on tblA.id = tblC.id とりあえずwhere条件をつけなくても、tblCに存在している人しか取得ができないのです。 where条件も含めて、上記条件のもと、希望するようなSQLの組み立て方をご教授ねがいたいのでよろしくお願いいたします。 できれば、早目の回答が希望です。

    • ベストアンサー
    • MySQL
  • SELECT文について

    PostgreSQL8.3にて、 |ID|担当者| 年月 |金額| | 1|太 郎|200807| 500| | 2|次 郎|200807|1000| | 3|次 郎|200807| 500| | 3|太 郎|200808|1000| | 4|次 郎|200808|1100| | 5|三 郎|200808| 900| | 6|太 郎|200809|1100| | 7|三 郎|200809|1200| というテーブルから、 | 年月 |太郎|次郎|三郎| |200807| 500|1500| 0| |200808|1000|1100| 900| |200809|1100| 0|1200| このようにすることは可能なのでしょうか。 どうかよろしくお願いします。

  • SQL文について教えてください。

    お世話になります。 テーブルを3つ作りました ユーザーテーブル:USER_MS USE_NO USER_NAME 001   太郎 002   次郎 003   三郎 品名テーブル:HINMEI_MS HINMEI_NO HINMEI_NAME 001    りんご 002    みかん 003    イチゴ 嫌いなものテーブル:KIRAI_TR KIRAI_NO USER_NO HINMEI_NO 001001  001   001 002003  002   003 002001  002   001 ※KIRAI_NO=USER_NO.HINMEI_NO と連結してプライマリーキーにした ここで、次郎の嫌いなものを抽出するときには $USER_NO = '002'; $SQL ="SELECT * FROM KITAI_TR A,HINMEI_MS B WHERE A.USER_NO = '$USER_NO'; で抽出できるのですが、 次郎の嫌いでない002みかんだけを抽出するSQL文がわからず苦慮しています。 以前、オラクルでSQLを使ったことがあったのですが、その時はFROM句の後に(SELECT * FORM・・・・) Bなどと書くと通ったのですがMYSQLでは通りませんでした。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • select文について

    現在、"user"というテーブルに"id"と"date(datetime)"という項目があり、その"date"にあるデータの中から月を指定して抽出したくて以下ようなSQL文を書いたのですがうまくいきません。 SELECT `id` FROM `user` WHERE convert((SELECT extract(month from `date`) FROM `user`), INTEGER) = 9 mysql5.0です。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • Recordset参照の記述方法

    WindowXP、ACCESS2003、を使っています SQLを使ってRecordsetを使う場合 (要点だけをCodingします) テーブル;TblAのフィールド:id, aa, ab、があるとして Set RS=OpenRecordset("SELECT * From TblA") とした時、RS!aaでフィールドaaを参照できます Debug.Print "RS=" & RS!aa さてテーブルを2つ使った場合 どう参照するかわからないでいます 例えば Set RS=OpenRecordset("SELECT TblA.id, TblB.bb From TblA INNER JOIN TblB ON TblA.id = TblB.id;") 但し テーブル;TblAのフィールド:id, aa, ab、 テーブル;TblBのフィールド:id, ba, bb、 を想定しています この時 bb、を参照するのに Debug.Print "RS=" RS!FileB.bb ではおかしいし Debug.Print "RS=" RS!bb ではTblA,TblB、のどちらのフィールドかわかりません (今はbb、はTblBにしかないのでわかりますが) 質問点はこれをどう記述するのか知りたいのですが よろしくお願いします

  • SQL文作成のお願い

    前提として下記のようなテーブルがあります。 テーブル名:test フィールド: 1)id: varchar, not null 2)name: varchar 3)date: timestamp with time zone, not null このテーブルに下記のようなレコードがあります。 '00001', 'A', '2005-01-01 00:00:00' '00001', 'B', '2005-07-01 00:00:00' '00001', 'C', '2005-11-01 00:00:00' '00002', 'X', '2005-01-20 00:00:00' '00002', 'Y', '2005-07-20 00:00:00' '00002', 'Z', '2005-11-20 00:00:00' ■今やりたいこと このテーブルからidごとにdateフィールド値が最近のレコードを取得したい。 ■やってみたこと 下記SQLを発行しました。 >select id, max(date) from test group by id order by id 結果==> 00001 2005-11-01 00:00:00 00002 2005-11-20 00:00:00 実際はnameフィールドの値も取得したいのですが、group by句を使うとフィールド指定ができませんでした。 ■だめだったSQL select id, name, max(date) from test group by id order by id どのようにSQLを書けばよろしいでしょうか?

  • テーブルの内容とテーブルのカラムの件数

    以下のようなテーブルがあります。 そのテーブルの内容と、そのテーブルのあるカラムの件数を条件にして抽出したいのですが、どのように指定すればよろしいでしょうか? テーブルA id(int) AUTO_INCREMENT, user_id(varchar), price(int), date(datetime) 表示したい一覧 user_id | date | price A | 2014-03-10 10:00:00 | 2600 B | 2014-03-11 11:00:00 | 2720 A | 2014-03-13 12:00:00 | 2500 C | 2014-03-14 15:00:00 | 2860 B | 2014-03-18 13:00:00 | 2450 A | 2014-03-19 19:00:00 | 2550 ・・・ などのレコードがあった場合、 user_idが同じ場合のレコード数が2&#65374;5の場合等を抽出したいと思います。 うまく表現できませんが、このような場合の抽出の仕方をわかる方、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • Mysqlの結合について質問させてください。

    MySQL5.0.37 を使用しています。 SQL文の作り方でどうしてもうまくいかないので質問させてください。 下記のような4つのテーブルがあります。 テーブル1:syukkingenba user|basyo 1 |東京 2 |東京 3 |東京 テーブル2:user user|name 1 |イチロウ 2 |ジロウ 3 |サブロウ テーブル3:genba basyo|date |genba_id 東京 |2009/1/10|123 syukkin id|user|date |status 1 |1 |2009/1/10|有効 2 |2 |2009/1/10|有効 3 |3 |2009/1/10|有効 4 |1 |2009/1/10|有効 現在のSQL文は SELECT syukkingenba.`user`, syukkingenba.`basyo`, user.`name`, syukkin.`id` FROM `syukkingenba` INNER JOIN `user` ON syukkingenba.`user` = user.`user` INNER JOIN `genba` ON genba.`basyo` = syukkingenba.`basyo` INNER JOIN `syukkin` ON syukkin.`date` = genba.`date` WHERE genba.`kaisai_id` = '123' AND user.`user` = syukkingenba.`user` AND syukkin.`status` = '有効' と記載しています。 すると結果は syukkingenba.`user`|syukkingenba.`basyo`|user.`name`|syukkin.`id` 1 |東京 |イチロウ |1 2 |東京 |ジロウ |2 3 |東京 |サブロウ |3 1 |東京 |イチロウ |4 となってしまいます。 syukkingenbaを親として、下記のような結果を抽出するにはどうすればよろしいでしょうか? syukkingenba.`user`に紐付くsyukkin.`id`は1でも4でも最初に検索された方でかまいません。 syukkingenba.`user`|syukkingenba.`basyo`|user.`name`|syukkin.`id` 1 |東京 |イチロウ |1 2 |東京 |ジロウ |2 3 |東京 |サブロウ |3 内容が分かりずらいようでしたらすいません。 どうかよろしくお願いいたします。

  • mysqlでのsql文

    石井と申します。 下記のデータの状態をもとに お答えをお願いします。 まず、tb_userというテーブルが id | name | age | hobby | tokugi | insert_dt -------------------------------------------- 1 | 北野 | 31 | 0101 | 0202 | 2005/6/12 という状態で、 tb_categoryというテーブルが以下のような状態になっています。 category_no | category_cd | subcategory_cd | name -------------------------------------------- 0100 | 01 | 00 | 趣味 0101 | 01 | 01 | 映画鑑賞 0102 | 01 | 02 | スキー 0200 | 02 | 00 | 特技 0201 | 02 | 01 | 早食い 0202 | 02 | 02 | 早起き ※subcategory_cdが00のとき、大項目という扱いで subcategory_cdが00以外のとき、 category_cdが同じ範囲で、 大項目に属する小項目という扱いにしています。 このとき、 『北野、映画鑑賞、早起き』というデータを1行で取得したいのですが、 select a.name, b.name from tb_user a, tb_category b where a.hobby=b.category_no or a.tokugi=b.category_no; というsqlで良いでしょうか? 手元にSQLを実行できる環境がないもので、確認させてください。