- 締切済み
WHERE文に関して
don9don9の回答
- don9don9
- ベストアンサー率47% (299/624)
NOT EXISTSを使えばよいのでは? SELECT * FROM member WHERE NOT EXISTS(SELECT * FROM no_magazine WHERE no_magazine.no_id = member.id AND no_magazine.no_mail = member.mail) このような感じで。
関連するQ&A
- select文のwhere句に配列を入れて検索したい
こんばんは。 題名の通り、select文のwhere句に配列を入れて検索したいのですが、 同じ質問↓も見つけ、やってはみるのですがうまくいかないので、教えてください。 http://oshiete1.goo.ne.jp/qa2940474.html 現在、 $member_id という配列にデータを入れ(この配列には正しく値が入っています。) $sql = "SELECT * FROM テーブル名 WHERE id IN (".$member_id."); としているのですが、うまくいきません。 どこがおかしいのでしょうか。 よろしくお願いします。
- ベストアンサー
- MySQL
- where文について
2008-10-28のような形式でMYSQLに生年月日を登録しています。 フォームのセレクトボックスにて誕生月のみを取得しlike文では なくwhere文でデータの読み込みを行いたいのですがどうやれば できるのでしょうか? 通常だと "SELECT * FROM テーブル名 where カラム名 = '200-10-28' " でいけると思うのですが誕生月のみの情報で "SELECT * FROM テーブル名 where カラム名 = '10' " とやっても無理ですよね^^; $_POST['birth_month']で誕生月を取得し数字は01~12までです。 ※取得は問題なくできておりわからないのがwhere文の書き方です。 できるだけシンプルな方法で行いたいのですがお分かりになる方が おりましたら是非ご教授お願い致します!
- ベストアンサー
- PHP
- 出欠登録について
現在phpとデータベースにて出欠登録を作成しています。 データベースには メンバーのテーブル、スケジュールのテーブル、出欠登録用のテーブルがあります。 $schedule_id = $_GET["scheduleno"]; $memberquery = sprintf("SELECT * FROM `member`"); $schedulequery = sprintf("SELECT * FROM `schedule` WHERE `scheduleno`='$schedule_id'"); $entryquery = sprintf("SELECT * FROM `entry` LEFT JOIN `member` ON `member_id`=member.no WHERE `schedule_id`='$schedule_id' AND `member_id`='$member_id'"); memberテーブル | no | 名前 | | 1 | 佐藤 | | 2 | 鈴木 | | 3 | 渡辺 | scheduleテーブル | no | 日程 | | 1 | 2011-01-23 | | 2 | 2011-01-30 | entryテーブル | no | schedule_id | member_id | entry | | 1 | 1 | 1 | 1 | | 2 | 1 | 2 | 2 | としてり、 出席者を割り出すには $entryquery1 = sprintf("SELECT * FROM `entry` LEFT JOIN `member` ON `member_id`=member.no WHERE `schedule_id`='$schedule_id' AND `entry` = 1"); 欠席者を割り出すには $entryquery2 = sprintf("SELECT * FROM `entry` LEFT JOIN `member` ON `member_id`=member.no WHERE `schedule_id`='$schedule_id' AND `entry` = 2"); としています。 ここで質問なのですが、出席者や欠席者は取得できていますが、未登録者を取得ができず困っています。 例 出席者 佐藤 欠席者 鈴木 未登録者 渡辺 としたいが、未登録者 渡辺がだせない。 どなたか仕組みを教えていただけないでしょうか? また、ソースも教えていただけれると助かります。
- ベストアンサー
- PHP
- SQL WHERE文のノットイコールについて
初歩的な質問ですみません。 Oracle9iでsqlplusで接続しています。 「member_accountテーブルのdelete_flag(VARCHAR2)カラムの値が'1'ではない」ものを抽出したいと考えてます。 ただ、正しい結果が返ってきません。 何が問題でしょうか?よろしくお願いいたします。 ============================================================ SQL> select count(ID) from member_account; COUNT(ID) ---------- 16450 SQL> SQL> select count(ID) from member_account where delete_flag='1'; COUNT(ID) ---------- 107 SQL> SQL> select count(ID) from member_account where delete_flag<>'1'; COUNT(ID) ---------- 0 SQL> SQL> select count(ID) from member_account where delete_flag!='1'; COUNT(ID) ---------- 0 ============================================================ よろしくお願いいたします。
- ベストアンサー
- Oracle
- SQL文でのデータの取得が上手くいきません
初めて質問させていただきます。 こちらのカテゴリで良いのか分からなかったのですが、よろしくお願いいたします。 SQL文を作成しているのですが、上手くいかず困っている状況です。 要件としてはテーブルAにユーザーの情報が格納されているのですが、 キーの一つとして世代(SEDAI_NO)(日付)を持っております。 今回取り出したいデータは該当ユーザーの処理日以前の最新のデータを 取得したいと思い以下のSQL文を作成しましたが、上手く行かず、最新世代を含むそれ以前の世代のデータを取得してきています。 どこがおかしいのでしょうか? よろしくお願いいたします。 【作成したSQL】 select * from テーブルA テーブルA’ where (USER_ID=該当のユーザーID) and (SEDAI_NO = (select max(SEDAI_NO) from テーブルA where SEDAI_NO = テーブルA’.SEDAI_NO AND 処理日 >= テーブルA'.SEDAI_NO)
- 締切済み
- その他(データベース)
- JOINを使った文で、date > now();
質問、失礼いたします。 PHP+MySQLでページを作成しています。 JOINを使って、2つのテーブルを表示しています。 その際に、「明日以降」という条件で絞り込みをしたいのですが、 【 AND date > now(); 】 という指定が上手く反映されません。 SQL文 SELECT table1.*, table2.kaijou, table2.cd, table2.member FROM table1 JOIN table2 ON table1.id = table2.id WHERE word LIKE '%東京%' OR word LIKE '%大阪%' AND date > now(); wordの条件は反映されています。 phpMyAdminの方から、直接SQL文を実行しても同じ結果だったので、 MySQLの方の接続は問題ございませんでした。 ご存じの方、宜しければご教授お願い致します。
- ベストアンサー
- PHP
- LEFT JOINが2つあるSQL文でANDの意味
■下記SQL文の意味を教えてください SELECT a.*, b.being_name FROM alive a LEFT JOIN being b ON a.hoge_id = b.id LEFT JOIN call c ON c.call_id = a.hoge_id AND f.hoge_id = 12 WHERE f.hoge_id = 12 OR b.id = 12 ※12の部分は動的に切り替わります ・LEFT JOINが2つあるので、3つのテーブルを結合しているのでしょうか? ・左テーブルは「alive a」で、この右側に2つのテーブルが結合している、という認識でよいでしょうか? >SELECT フィールド名 FROM テーブル名 WHERE 条件式1 AND 条件式2 >「AND」は2つの条件式の論理積 ・上記内容をネットで見かけたのですが、「AND」は、「WHERE」の前に来てもいいのでしょうか? それともこのSQLの「AND」は違う使い方をしているのでしょうか? 何か、LEFT JOINに関係しているのでしょうか?
- ベストアンサー
- MySQL
- OUTER JOIN、WHEREとCOUNTの併用
SQL文で Aテーブル 1 a 2 b Bテーブル 1 a null 2 a aa 3 b null 4 b bb があり、 AとBをJOINして取得したいのですが、 最終的にAテーブル一覧と、Bテーブルのaaがある項目だけをSelectしてきたいと思っております。 Select結果: 1 a 1(←aaのcountのみ) 2 b 0(←bbやnullなら0) しかし、普通にOUTER JOINして、Whereすると、 bの項目が取得できなかったり、します。 上記のようなデータを取得することは可能でしょうか?
- ベストアンサー
- SQL Server
- 3つのテーブルを結合したSELECT文
お世話になります。困っているので質問させて下さい。 MySQLのSQL文に関しての質問ですが、PHPで記述しているので、このPHPのカテゴリで投稿させて頂きます。ご了承下さい。 以下のようなカラムを持ったテーブルがあります。 実際に当方で用意しているカラムそのものなのですが、簡単に説明させてもらうと、この教えてGooのような質問を投稿できるサイトで、その質問となるデータを収めるのが、questionテーブル。会員データを収めるのがuserテーブル。PHPやMySQL、HTMLのように質問のジャンルを収めておくテーブルがcategory2です。 question(テーブル) q_no q_user_no q_category_no q_title q_exp q_img q_date q_state q_answer_cnt q_solution state user(テーブル) user_no user_mail user_pass user_n_name user_icon category2(テーブル) no category_id category_no category2_name ※上記各テーブルの最初のカラムはauto-incrementとして自動で連番を与えています。 ここで質問に移ります。 questiontテーブルに質問データがいくつか収まっている状態で、質問単位(スレッド単位)で呼出すためにURLに、questionテーブルのq_noとなる番号をパラメータで渡しているのですが、 $sql = "SELECT * FROM question WHERE q_no = '$get_q_no' AND state = 'on' AND q_state = 'on'"; このように、questionだけを呼出すと問題ないものの、3つのテーブルを結合して呼出すと一部のデータが呼び出せない状態です。 $sql = "SELECT question.q_no, question.q_user_no, question.q_category_no, question.q_title, question.q_exp, question.q_date, question.q_state, question.q_answer_cnt, question.q_solution, question.state, user.user_no, user.user_n_name, user.icon, user.user_mail, category2.no, category2.category2_name FROM question INNER JOIN user ON question.q_user_no = user.user_no INNER JOIN category2 ON question.q_category_no = category2.no WHERE question.q_no = '$get_q_no' AND question.state = 'on' AND question.q_state = 'on'"; SQL文に問題があるのでしょうが、全てのデータが呼び出せないのであればともかく、一部のデータだけ呼び出せないという状況で、どこに問題があるか分からず、この場をお借りし質問させて頂ければと投稿しました。 最後になりましたが、MySQLは、5.1.22-rcです。 お忙しいなか恐縮ですが、アドバイスのほど頂戴出来れば幸いです。 宜しくお願い申し上げます。
- ベストアンサー
- PHP
- WHERE句で結合。INNER JOINとの違い
MySQLで複数テーブルからデータ取得する際、 FROMの後に、テーブル名を2つ書いて、「WHERE」で繋げる書き方と、 「JOIN ★★ ON」で繋げる書き方では、何が違うのでしょうか? ・「INNER JOIN」と同じ意味でしょうか? ・書き方によっては、「LEFT OUTER JOIN」みたいにも書けるのでしょうか? ・普通は、どちらの書き方で書くとか、そういうお作法的な暗黙の了解はあるでしょうか? ・例えば「WHERE」だと3つ以上繋げられない(?)から、奨励されていない、とか…
- ベストアンサー
- MySQL