2011-01-16 12 views
1

「リンクテーブル」に接続された2つのテーブルのデータを結合する方法について、誰でも説明してください(または良いチュートリアルにリンクしてください)。2つのテーブルのデータを多対多の関係で結合することについての質問

  • 一つのテーブルには、
  • 一つのテーブルが
  • 一つのテーブルには、各質問には多くのカテゴリに属しているquestion_categories

が含まれており、各カテゴリには多くの疑問を持つことができますカテゴリが含ま質問が含まれています。

リンクテーブルには、カテゴリと質問テーブルに対する外部キーを持つ2つのid、categoryIDおよびquestionID(表の主キー)が含まれています。

しかし、私はどのようにID 2がどのカテゴリの質問に属しているかを表示するためのSQL選択をどのように書くことができるのか完全に理解していません。

徹底した説明は非常に高く評価されます!

ありがとうございます。

答えて

2

JOIN句を使用してテーブルを接続します。

SELECT Q.* 
FROM question Q 
    INNER JOIN question_categories QC 
    ON q.questionId = QC.questionID 
WHERE QC.categoryID = 2 

それを打破するには、次の

SELECT Q.* -- Get all fields from the alias Q (though you should specify fields) 
FROM question Q -- From the question table, aliased Q 
    INNER JOIN question_categories QC -- Join on the question_categories table (QC) 
    ON q.questionId = QC.questionID -- Using the questionIds on both tables as join criteria 
WHERE QC.categoryID = 2 -- constrain to only categoryId of 2 

編集(questionIdによってカテゴリの例)コメントで要求されるように:

SELECT C.* 
FROM category C 
    INNER JOIN question_categories QC 
    ON C.categoryId = QC.categoryID 
WHERE QC.questionID = 1 
+0

をしかし、私、私は選択クエリを記述しますquestionID = 1も属していると言うすべてのカテゴリが欲しいですか? – LuckyLuke

+0

@ Andreas Johannessen - 同様の方法で。 'categoryId'フィールドを使用して、' questionId'の1に制限する 'category'テーブルを使用してください。 – Oded

+0

@Andreas Johannessen - あなたはSQL結合について読んでみることをお勧めします。それらは言語の不可欠な部分です。 – Oded

関連する問題