2

私は初心者なので、可能な限り最善の方法でこの質問をしていない場合はお詫び申し上げます。2 つのテーブルがあるとします。1 つは呼び出されCatColours、もう 1 つは呼び出されます。Cats

CatColours

  id colour  spots
  -- -----   -----  
  1  brown   Yes
  2  black   No
  3  white   No
  4  orange  Yes

Cats

  id cat_name   
  -- ----     
  1  Jimmy 
  2  Shadow 
  3  Snowball   
  4  Lucky

したがって、CatColoursテーブルのidが主キーになり、列の色の値がID番号に対応します。 2 番目のテーブルCatsには、cat_namesと外部キーとなるidがあります (間違っている場合は訂正してください)。

データが正しい猫に対応する最初のテーブルCatColoursのとして2 番目のテーブルCatsにidを表示するクエリを作成したい (つまり、 CatColoursのid 1 は、値 BROWN と spot に対応、ただし、現在のところ、スポットの下の値については気にしていません. Catsのid 1 はJIMMY に対応しています.クエリを実行すると、ID がidであるcat_nameに対して、2 番目のテーブルCatsでid 1 を BROWN として 表示したい

に対応し、残りの猫についても同様です。)

これが理にかなっていることを願っています。明確にする必要があるかどうか尋ねてください。テーブルを変更または変更するのではなく、このデータを取得して要約するステートメントを実行したいだけです。

4

4 に答える 4

2

単純な結合を探しているだけだと思います:

SELECT CatColours.id, Cats.cat_name, CatColours.colour
FROM CatColours
INNER JOIN Cats ON CatColours.id = Cats.id

そして、ここにデモンストレーションする SQL Fiddle があります

結合の詳細については、次も参照してください。


正直なところ、FK 関係を切り替えて、Cats (名前付き) を親テーブルにします。

于 2013-09-26T01:34:08.727 に答える
0

試す

 SELECT C.id, C.cat_name, CC.colour, CC.spots
 FROM cats C
 INNER JOIN CatColours CC ON
 C.id = CC.id
于 2013-09-26T01:38:56.607 に答える
0

既存のテーブルからデータを取得したいだけの場合は、既に投稿されている任意のクエリを使用できます。

Pls は、テーブルがあまりよく整理されていないことに注意してください。

茶色で斑点のないジミーという名前の猫をどのように表現しますか? また、CatColors テーブルには冗長なデータが含まれていることに注意してください。これは、猫がスポットなしで 1 つの色を持つことができるため、必要以上の dta を入力しているためです。

このようにテーブルを修正することをお勧めします

猫の色

id  color

1   brown

2   white

3   black

4   organge

5   gray....

id  name    color_id    spots

1   Jimmy   1          1

2   Shadow  2          0

3   Lucky   2          1

これは、テーブルの正規化について読むことができる優れたチュートリアルであり、これに関する理論的な背景を説明しています

http://dotnetanalysis.blogspot.com/2012/01/database-normalization-sql-server.html

于 2013-09-26T13:53:10.043 に答える