MYSQLからデータを取り出したいのですが、下記のようなことは可能でしょうか?


テーブルが2つで、
Aテーブルには、キーワード・カテゴリID
Bテーブルには、本の内容・著者名がある状態で、

Aテーブル
キーワード カテゴリID
1料理 23
2サッカー 5
3将棋 15
4囲碁 14

Bテーブル
内容 著者名
1サッカーでの~ 田中太郎
2パスタ料理の紹介 田中花子
3囲碁の定石 白黒太郎
4将棋の基礎 駒田一郎

これらを【特定のキーワードを入力せず】に
サッカーというキーワードでAテーブルの2とBテーブル1を、
料理というキーワードで1と2、
囲碁というキーワードで4と3
将棋というキーワードで3と4を自動的に関連を持たせて
さらに指定したAテーブルのカテゴリIDだけの結果を表示させたいのですが、
このようなことは可能でしょうか?
(BにカテゴリIDをつける方が簡単に思えるのですが、
上記のようなことは可能なのか教えていただきたいと思っています。)

参考となるコード・知識教えていただければ助かります。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/03/30 12:27:26

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

一例

# サンプルデータ
CREATE TEMPORARY TABLE A (`キーワード` TEXT, `カテゴリID` INT);
INSERT INTO A VALUES('料理', 23)
    ,('サッカー', 5)
    ,('将棋', 15)
    ,('囲碁', 14)
;
CREATE TEMPORARY TABLE B (`内容` TEXT, `著者名` TEXT);
INSERT INTO B VALUES ('サッカーでの~', '田中太郎')
    ,('パスタ料理の紹介', '田中花子')
    ,('囲碁の定石', '白黒太郎')
    ,('将棋の基礎', '駒田一郎')
;
# 実行文
SELECT A.*, B.*
FROM A
CROSS JOIN B
WHERE A.カテゴリID = 5
   AND B.内容 LIKE concat( '%', A.キーワード, '%' )
;

その他の回答0件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149ここでベストアンサー

一例

# サンプルデータ
CREATE TEMPORARY TABLE A (`キーワード` TEXT, `カテゴリID` INT);
INSERT INTO A VALUES('料理', 23)
    ,('サッカー', 5)
    ,('将棋', 15)
    ,('囲碁', 14)
;
CREATE TEMPORARY TABLE B (`内容` TEXT, `著者名` TEXT);
INSERT INTO B VALUES ('サッカーでの~', '田中太郎')
    ,('パスタ料理の紹介', '田中花子')
    ,('囲碁の定石', '白黒太郎')
    ,('将棋の基礎', '駒田一郎')
;
# 実行文
SELECT A.*, B.*
FROM A
CROSS JOIN B
WHERE A.カテゴリID = 5
   AND B.内容 LIKE concat( '%', A.キーワード, '%' )
;
id:at0413

求めていたそのもので、助かりました。

ありがとうございました。

コメントはまだありません

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

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

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

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