MySQLについて


下記2つのテーブルから検索したいのですが、SQL文を教えて下さい。

商品データからカテゴリの上4桁に「1234」がマッチする商品を扱っている
企業の会社名と電話番号を取得したいと考えています。

phpでいうと preg_match("/^1234/",$category,$match); のような感じです。

取得したい情報量は該当する全てです。
ソートして上位xx件だけ、と言うのではなく全てです。
データの順番は問いません。
重複分は不要です。


会社テーブル : office

 企業ID : id
 会社名 : name
 電話番号 : tel

商品データ : items

 商品ID : itemid
 商品名 : itemname
 カテゴリ : category(6桁の数字)
 企業ID : id


よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/07/01 19:28:44
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント60pt

select distinct office.name,office.tel from office,items where items.category like "1234%" and items.id = office.id

すみませんが、未確認ですけど、こんな感じでやればいいと思います。

id:worldtravel

ありがとうございます。

▼追記

すみません。

重複分は不要です。と書いたのですが、

複数のカテゴリの商品を扱っている企業は

カテゴリ毎に取得したいと考えています。

office.name,office.tel の部分を下記のようにするだけで

希望通りに行きますでしょうか。

office.name,office.tel,items.category

自分で試せ。と言う話しですが.....よろしくお願いします。

▼追記

何とかできそうです。

もしわからなくなったときのために

質問をこのままにさせて下さい。

2010/07/01 12:17:58
id:yamaneroom No.2

回答回数1040ベストアンサー獲得回数61

ポイント10pt

下記のようにすればできます。

SELECT office.name,office.tel FROM office,items WHERE items.category LIKE "1234%" AND items.id = office.id;
id:worldtravel

ありがとうございます。

2010/07/01 19:26:31
id:frkw2004 No.3

回答回数194ベストアンサー獲得回数21

ポイント10pt

Select category, name, tel

From items left join office

on items.id office.id

where category DIV 100 = 1234

and office.id is not null

でどうでしょうか。

categoryが数値型であるなら、算術演算の方が効率がいいように思います。

id:worldtravel

ありがとうございます。

カテゴリは数値型ではないんです。

2010/07/01 19:27:42
  • id:taknt
    カテゴリ毎でしたら コメントにあるように カテゴリの項目を 抽出項目に追加すれば
    distinct で カテゴリを含んだ重複分を カットしてくれると思いますね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません