2011-10-29 15 views
0

私はこの1つの上に私の髪を引っ張ってきました...そして、私は確かにその海峡を十分に前方に確信しています。しかし、私は答えを見つけることができません。マップテーブルを持つ2つのデータベースを照会

私がしようとしているのは、2つのテーブルから情報を引き出すことです。私はかなり新しいJOINを始めました。実用的な例として、書籍のデータベース(ID、タイトル、著者、エディション、年)があると言うことができます。それから私はクラスのデータベースを持っています(id、subject、teacher)。クラスによっては同じ本を使うクラスもあります。

を選択し、クエリ/ Joinamanytomanymaptable.htm "> http://www.java2s.com/Tutorial/MySQL/0040_Select-Query/Joinamanytomanymaptable.htm

I:ここで説明したように、私は、マップテーブルを作成しました

私が欲しいのは、クラスに基づいてBOOK情報を描くことです。したがって、クラスid(ClassID)が1つの列にリストされていれば、ClassBookというテーブルが作成されます。私はそのクラスに関連するすべての書籍とその情報を欲しがっています。以下は、どのような質問の例です:

SELECT * FROM ClaクラスIDは、(3)テーブルにある場合ssBook は(ClassBook)、このクエリから8回= 3

のClassID ONブック を登録しよう、それが出力EVERY書籍とその情報8倍になります。私が望むのは、クラスid3に関連する書籍とその情報だけです。どんな助けもありがとうございます!

答えて

0
SELECT * FROM class 
JOIN ClassBook on class.id = ClassBook.ClassID 
JOIN books on ClassBook.BookID = books.id 
WHERE Class.ID = 3; 

これはすべてをリンクするために使用する形式です。 on句は通常、結合されるテーブルに関連する基準を記述して配置されます。 where句は、選択したレコードを制限するためのものです。

+0

私は永遠に=愛する)トンありがとう! – user791187

0

は、参加この

SELECT books.* FROM ClassBook CB 
JOIN books ON CB.bookid=Books.id 
WHERE cb.ClassID=3 

がクラス帳テーブルと同じ本のID番号を共有ブックテーブルからすべての列からすべての列のより大きな「結果」を作成します試してみてください... WHERE句ClassID = 3で使用された書籍よりも大きな結果が得られた結果のみを表示します。 books。*構文はbooksテーブルの列のみを表示し、a *は両方のテーブルのすべての列を表示します。

+0

素晴らしいアドバイス...ありがとうございます! – user791187

関連する問題