閲覧ありがとうございます。
2個以上のテーブルで外部接続する方法が判らず
投稿しました。
DATA1
-----------------------
店名 カテゴリ1 カテゴリ2
大将 ラーメン 餃子
トレビアン パスタ ケーキ
ジャンル
-----------------
カテゴリ 大分類
ラーメン 中華
餃子 中華
パスタ イタリアン
ケーキ スイーツ
お店の 「名前」・「カテゴリ」 が入っているテーブルに、
「ジャンル」をくっつけたいと思っています。
期待している結果は以下のようなものです。
DATA1
-----------------------
店名 カテゴリ1 カテゴリ2 大分類1 大分類2
大将 ラーメン 餃子 中華 中華
トレビアン パスタ ケーキ イタリアン スイーツ
以下のように書いてみましたが、上手くいきませんでした。
どのようにSQL文を書けばいいのか、いまいち判りません。
初歩的な事かもしれませんが、よろしくお願いします。
select *
FROM DATA
LEFT JOIN ジャンル ON (カテゴリ1=カテゴリ)
LEFT JOIN ジャンル ON (カテゴリ2=カテゴリ)
No.2ベストアンサー
- 回答日時:
>実は、ジャンルのテーブルを「ジャンル1」「ジャンル2」と二つ用意する
>方法は一度ためして、それ以外の方法がないかと悩んでいました。
>
>今、DATA1の中に「カテゴリ1」から「カテゴリ5」まであり、
>これでは同じ内容のテーブルが5個になってしまうので、
ちょっと勘違いされているようです。
私の回答は、「別名を付けているだけ」であり、ジャンルのテーブル自体は「1つのまま」です。
ジャンルテーブルを2つ(5つ)作る必要はありません。
大事な事なので2回書きますw
私の書き方で必要なテーブルは
「DATA1とジャンルの2テーブル」だけです。
「DATA1とジャンル1とジャンル2の3テーブル」ではありません。
つまり「同じテーブルを別のテーブルとして扱っている」だけです。
そうではなく、単純に
「LEFT JOINを何度も書くのは煩雑なので単純にできないか」
と言う事でしたら、「できません」。
そもそも、ジャンル1~ジャンル<n>、と言う風に、横に繰り返し列を持つのは正規化上、好ましくないんです。
(まあ、5つくらいが限度でしょう)
これが何10とあるなら、DATA1とカテゴリのリレーションを持つ中間テーブルを作るべきでしょうね。
データの正規化については、ご自分で調べてくださいね。
データーの正規化、中間テーブルのキーワードで色々調べてみました。
おっしゃるとおり、設計を見直すほうがいいですね。
多対多の問題点に、現在思いっきり該当しています。
正規化にしたがってDBを作りかえる事にしました。
すでに、このQAのタイトルと内容がズレていますが
他の方がQ&A参照したときに、参考になるように
リンクを張っておきます。
多対多のデータの問題点
http://oshiete.goo.ne.jp/qa/3738694.html
データの正規化
http://gihyo.jp/dev/feature/01/database/0003?pag …
自分の場合、設計の都合で、カテゴリー5個まで
と現実側に制限がかかっていました。
今回は、勘違い気味な質問にまで付き合ってくださって
ありがとうございました。
No.1
- 回答日時:
ジャンルから取得したい情報は、DATA1上にある、カテゴリ1とカテゴリ2で、2種類(キーは別)なのだから、「この2つのジャンルは別物である」と言う事をDBエンジンにわからせる必要があります。
つまり、「カテゴリ1用のジャンル」と「カテゴリ2用のジャンル」と言う風に書くんです。
そのためには以下のように、別名(エイリアス)を付けてください。
SELECT
d.店名,
d.カテゴリ1,
d.カテゴリ2,
g1.大分類 大分類1,
g2.大分類 大分類2
FROM DATA1 d
LEFT JOIN ジャンル g1
ON d.カテゴリ1 = g1.カテゴリ
LEFT JOIN ジャンル g2
ON d.カテゴリ2 = g2.カテゴリ
SQlite3なのでおそらくLinuxか、iOSか、Androidの話かと思われますが、今手元に環境がないので、FireFoxプラグインのSQLite Manager(Windows)で確認しました。
この回答への補足
回答ありがとうございます。
質問が悪かったみたいで、質問の補足です。
実は、ジャンルのテーブルを「ジャンル1」「ジャンル2」と二つ用意する
方法は一度ためして、それ以外の方法がないかと悩んでいました。
今、DATA1の中に「カテゴリ1」から「カテゴリ5」まであり、
これでは同じ内容のテーブルが5個になってしまうので、
「ジャンル」のテーブルをなんとか1つ済ます回避策等があれば
と思って質問させていただきました。
もしかしたら機能的に無理な事を聞いているかもしれません。
無理な場合は無理と言っていただける形でも助かります。
たびたび済みませんがよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) 社内サイトのコンテンツのカテゴリ分けについて教えてください。 いま、社内向けポータルサイトを直そうと 1 2023/04/18 23:08
- その他(悩み相談・人生相談) 男性は綺麗なおばさんを見て綺麗な女性だと思いますか?綺麗なおばさんだと思いますか? 6 2022/10/05 20:00
- その他(IT・Webサービス) Yahoo!知恵袋でアダルトというカテゴリを選択せずに性の質問をしたいのですが4つの質問中4つとも1 2 2023/04/09 11:30
- OCN光 LANケーブルのカテゴリについて 今更ですが最近、ADSLから光回線にしました。Wi-Fiではなく、 3 2023/01/20 16:15
- ヒーター・こたつ・ホットカーペット 急に寒くなりましたね。 12 2022/10/07 09:25
- 教えて!goo ここのサイトは、カテゴリ選択に意味があるのでしょうか? 特定のカテゴリしか見ていない人には意味がある 7 2023/07/17 14:20
- 飲食店・レストラン 中華料理店について 中国料理を食べたいのですかおすすめの店ってありますか?メインで餃子、チャーハン、 1 2022/05/12 01:06
- 教えて!goo 「教えて!goo」のルールで質問があります。 1 2022/06/17 05:57
- 統計学 人の主観を使って判断する例を探しています。 5 2022/06/15 14:57
- 哲学 ピタゴラスの定理の証明を形相論理で求める 3 2023/06/24 12:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
今度同じサークルだった女の子...
-
このテーブルで
-
会社の飲み会の幹事になり、座...
-
まるいテーブル 円い 丸い 漢字...
-
外部キーだけのテーブル(主キ...
-
特定物と不代替物の違い
-
DBの容量について
-
面接のときテーブルが正面に。...
-
男性と2人で飲食店に行きテーブ...
-
お金持ちのテーブル
-
Access 振込手数料計算
-
飲み会で、座敷orテーブルどち...
-
風水で丸いテーブルはあまりよ...
-
オーダーの覚え方について
-
ファイルメーカー起動時の設定
-
人の前を通る場合について
-
クエリを教えてください select...
-
SQL 外部結合
-
L2SWはARPテーブルを持っている?
-
ACCESSで3ファイルを結合して、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
L2SWはARPテーブルを持っている?
-
テーブルリンク リンク元を知...
-
会社の飲み会の幹事になり、座...
-
外部キーだけのテーブル(主キ...
-
飲み会で、座敷orテーブルどち...
-
アクセスのリンクテーブル一覧...
-
複数テーブルにわたるCOUNT
-
男性と2人で飲食店に行きテーブ...
-
「テーブルに座って……」という...
-
複雑なSQL文について
-
まるいテーブル 円い 丸い 漢字...
-
お金持ちのテーブル
-
【PHP】SQL文のSUM関数で出力し...
-
論理名とコメント構文(?)について
-
1つのテーブルに同じデータを参...
-
1対1のリレーション(主キー同...
-
MySQLで複数テーブルを作成する
-
テーブルの白く剥がれてるところに
-
オーダーの覚え方について
-
このテーブルで
おすすめ情報