MySQLで絞り込みする方法とは?

このQ&Aのポイント
  • MySQL初心者のために、OFFICEテーブルとSTAFFテーブルを絞り込む方法を教えてください。
  • office_idが同じ場合はoffice_nameを取得し、office_idが0の場合はoffice_nameが空のまま取得したいです。
  • 具体的な希望結果はstaff_id、office_id、office_name、staff_nameの情報が表示されることです。
回答を見る
  • ベストアンサー

mysqlで絞り込み

mysql初心者です。 以下のOFFICEテーブルとSTAFFテーブルがあった場合、 office_idが同じ場合はoffice_nameを取得して office_idが0の場合はoffice_nameに何も入っていない状態で 取得したいのですが、やり方が分からずに困っております。 どなたかご教授ください。 よろしくお願いいたします。 OFFICE office_id office_name 100000  東京 100001  大阪 STAFF staff_id office_id staff_name 100000 100000 ヤマダ 100001 100001 オカベ 100002 0    ワタナベ 希望結果 staff_id office_id office_name staff_name 100000 100000 東京     ヤマダ 100001 100001 大阪     オカベ 100002 0           ワタナベ

  • PHP
  • 回答数2
  • ありがとう数0

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

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

もしNULLを返したくない場合はCOALESCEを使うと便利です select staff_id,office_id,coalesce(office_name,'no data') as office_name,staff_name from STAFF left join OFFICE using(office_id)

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.1

select STAFF.staff_id,STAFF.office_id,OFFICE.office_name,STAFF.staff_name from STAFF left join OFFICE ON STAFF.office_id = OFFICE.office_id;

関連するQ&A

  • Mysql 絞り込み検索

    絞り込み検索を実装したいのですがうまくいきません。 ご教授していただければ幸いです。 データは次のとおりです。 テーブル名 「zyoho」 カラム  cityid :tenki_id :kansou 1:1:あつい 2:2:乾燥してる 1:2:乾燥してる 3:3:寒い 以上をセレクトボックスにて絞り込み 「kansou」のデータをだしたいのいです。 一つ目のセレクトボックス ・東京 :cityid 1 ・大阪:cityid 2 ・熊本:cityid 3 二つ目のセレクトボックス ・晴れ:tenki_id1 ・雨:tenki_id2 ・雪:tenki_id3 ・何も選択しなかったらすべて表示。 ・例えば東京だけ選ぶと あつい 乾燥してるの二つのデータ結果。 ・天気だけを選ぶと出てくるいくつかのデータ結果。 ・県、天気を選ぶと絞り込まれたデータ結果。 このように絞り込みたいのですがご教授いただければ幸いです。 お願いいたします。

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

    いつもお世話になっております。 またまたmysqlについて質問させていただきます。 下記のようなテーブルがあります。 tabel A | type_id | member_id | date| | 2 | 45| 2012-6-21 | | 2 | 46| 2012-6-22 | | 2 | 47| 2012-6-19 | | 2 | 48| 2012-6-10 | | 4 | 49| 2012-5-23 | | 4 | 50| 2012-5-24 | | 4 | 51| 2012-5-21 | | 4 | 52| 2012-5-22 | | 3 | 53| 2012-7-25 | | 3 | 54| 2012-7-26 | | 3 | 56| 2012-7-23 | | 3 | 57| 2012-7-24 | | 1 | 58| 2012-8-17 | | 1 | 59| 2012-8-18 | | 1 | 60| 2012-8-25 | | 1 | 61| 2012-8-26 | table B | type_id | name | | 1 | aaaa | | 2 | bbbb | | 3 | cccc | | 4 | dddd | 下記の条件で値を取得するSQLをご教授いただけますでしょうか 1.type_idでまとめたものを3件ずつ取得   (三件の中で一番直近のdateを持っているもの順にtype_idを並べる) 2.type_idのまとめた三件がdateの直近順 3.type_idのそれぞれのnameをくっつける 結果として | type_id | member_id | date|name | 4 | 51| 2012-5-21 |dddd | 4 | 49| 2012-5-23 |dddd | 4 | 50| 2012-5-24 |dddd | 2 | 48| 2012-6-10 |bbbb | 2 | 47| 2012-6-19 |bbbb | 2 | 45| 2012-6-21 |bbbb | 3 | 56| 2012-7-23 |cccc | 3 | 57| 2012-7-24 |cccc | 3 | 53| 2012-7-25 |cccc | 1 | 58| 2012-8-17 |aaaa | 1 | 59| 2012-8-18 |aaaa | 1 | 60| 2012-8-25 |aaaa 説明が下手ですみません…分かりにくければ補足説明いたします…

    • ベストアンサー
    • MySQL
  • mysql_fetch_assoc()の非推奨

    phpを始めてまだ数ヶ月の初心者です。 (少々表現が変なところはお許し下さい。) ■やりたい事 phpである登録画面を作成しています。サーバーには スタッフのデーターが入っているテーブルがあります。 (1)DBに登録してあるスタッフの名前を全部引っ張り出す(mysql)。 (2)登録画面の入力項目の1つとして(登録スタッフ)があり、  そこを<select>で上記(1)から取り出したものを自動で表示したい。 ところが、mysql_fetch_assoc()について調べたら、非推奨などと載っていて (内容がよく理解できませんでしたが)どのように記述したら、将来困らない  コーディングとなりますか? <select name="register"> <?php $sql = "select count_ID, name from reserve"; $result = mysql_query($sql); while ($row = mysql_fetch_assoc($result)) { echo "<option value=\"".$row["count_ID"]."\">" .$row["name"]."</option>"; } ?> </select> 今からphpの知識を少しづつつけていくにあたり、非常に混乱して います。mysqlをそもそも学んでいてもしょうがないということでは ないですよね。本当に初心者なので、お手数ですがわかりやすい表現 でお願いします。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • mysql3.23でテンポラリテーブルの使い方

    mysql3.23で、以下のようなテーブルでリスト形式の番号を、対応する他のテーブルのデータにマッチさせて代入する方法を教えてください。 [テーブル1] 'id' | 'type' 1 | 1,2 2 | 1,3,5 3 | 2,4 [テーブル2] 'id' | 'name' 1 | red 2 | blue 3 | yerrow 4 | green 5 | pink [このように出力したい] 'a.id' | 'b.name' 1 | red,blue 2 | red,yerrow,pink 3 | blue,green サブクエリなど使えばできるのだと思いますが、 ずっとmysql3.23なので、今まではプログラム側でループさせて出力していましたが、 今回テンポラリーテーブルに挑戦しようと思ったので、テンポラリーテーブルを使って取得する方法があれば、ぜひやり方を教えてください。 お願いします。

  • MySQL文がわかりません。

    いつもお世話になってます。 PHP+MySQLを使用しています。 下記のような操作を行いたいのですが、 MySQL文を教えて頂けませんでしょうか。 table名:person person_id : name : email 1 : tanaka : aaaaa 2 : suzuki : bbbbb 3 : sato : ccccc 4 : saito : ddddd 5 : takahasi : eeeee 上記のようなテーブルがあったとして、 例えば、person_idが2,4のものを抽出して、 table名:sendmail send_id : name : email : ticket 1 : ito : fffff : 10-20 2 : huruka : eeeee : 11-01 3 : suzuki : bbbbb : 11-19 4 : saito : ddddd : 11-19 上記テーブルに追加(send_idの3,4)したいのです。 ticketカラムは、send_idの3,4で同じ値(文字列)を使います。 大変お手数ですが、上記内容にてご教授願います。

    • ベストアンサー
    • MySQL
  • MySQLでのWhere句

    MySQLでWhere句の書き方で苦戦しています。 以下のuser_table(オーダー)が来たときに、スタッフが用意すべき数量を商品ごとに抽出するSQLを書いています。 Where句の書き方が思いつきません。ご指導をお願いいたします。 user_table (name) (product) (user_volume) takada | pro_001 | 500 | takada | pro_002 | 100 | matuda | pro_003 | 400 | kawase | pro_001 | 200 | yosida | pro_001 | 500 | tanaka | pro_001 | 300 | tanaka | pro_002 | 500 | tanaka | pro_003 | 300 | 作りたいテーブル(SQLの結果) total_table (id)(product_name)(total_volume) staff | pro_001 | 1500 | staff | pro_002 | 600 | staff | pro_003 | 700 | 途中まで作って断念したSQL INSERT INTO total_table (id ,product_name,total_volume) SELECT 'staff',product,SUM(user_volume) FROM user_table WHERE ・・・;

    • ベストアンサー
    • MySQL
  • MySQLでinsertした行を取得する

    table t1 id name ------- 1 aaa 2 asv 3 aae といったauto incrementのidを持ったテーブルt1を考えたときに mysql_queryで新規行をinsertした場合にそのidを取得するような ことはできるのでしょうか? phpのmanualを参考にしたところ出来ないような感じのことが書かれて いたのですが,このようなことは頻繁に必要な気もするのですが・・・ 既に考えた案としては ・auto incrementを外して最大のidの1つ上を指定してinsertする ・一度lockしてからinsertして最大のidを取得する というものです もっと1つの関数かなにかでスマートに書けたらいいのですが

    • ベストアンサー
    • PHP
  • PHPでレコード追加(MYSQL)が出来ません

    以下のようにするとうまくいってたのが、 ひとつフィールドを増やすとうまくいきません。 単純なミスだろうと思い、数時間格闘していますが見つかりません。 よろしくご教授お願いいたします。 MYSQL table mem id vacher(10) name vacher(100) pass varcher(8) regdate date PHP $sql = "insert into mem (id , name , pass ,regdate) values ('$id', '$name', '$pass', now())"; ↓↓↓↓↓↓ MYSQL table mem id vacher(10) name vacher(100) pass varcher(8) regdate date kikan varcher(100) PHP $sql = "insert into mem (id , name , pass ,regdate ,kikan) values ('$id', '$name', '$pass', now() ,'$kikan')";

    • ベストアンサー
    • MySQL
  • MySQLで別テーブルでのSELECTでNULLの場合

    MySQLで以下のようなテーブルの場合 test_1 id name test_2 test_1_id name このような構造の場合、test_1からtest_2のselectでtest_1.id=test_2.test_1_idでjoinした場合に、 test_2にデータが存在していなかった場合、 test_1テーブルのnameを返すようなsqlはどのように記述すればよいでしょうか、、

    • ベストアンサー
    • MySQL
  • PHPでMySQLに登録されているデータのMAXと他のフィールドからデータの取得

    PHPでMySQLの最新のデータを取得し、そのデータのデータ番号を取得しようとしています。 テーブルは ID(INT型、AUTO_INCREMINT) | name(VARCHAR型) | t_touroku(DATATIME型) 1 | test1 | 2005-12-1 12:11:10 2 | TEST2 | 2005-12-2 12:56:10 となっています。 ここから最新のデータt_tourokuを検索しそのデータのIDを取得したいのですが、どうにもうまいことできません。 この場合ですと、IDの2を取りたいんです・・・。 MAXを使えばいけると思ったのですが、最新のデータしか取得できずIDを取得できませんでした・・・。 どうか、お知恵を貸して下さい。 よろしくお願いします。 バージョンは PHP 4.3.10 MySQL 3.23.58 です。

    • ベストアンサー
    • PHP

専門家に質問してみよう