-2

私は3つのテーブルを持っています:

アイテム
ItemCategories
カテゴリ

ItemCategoriesに含まれるもの:
id
itemID
categoryID

アイテムのカテゴリ名を取得するSQLをどのように記述しますか?

これまでのところ:

Select * 
from
   items, 
   itemCategories, 
   categories
where 
  item.id = itemCategories.itemID
  and categories.id = itemCategories.categoryID
4

1 に答える 1

3

これは、コンマ区切りのテーブル結合のJOIN形式です。

select *
  from items i
  join itemCategories ic on i.id = ic.itemID
  join categories c on c.id = ic.categoryID

通常、次のことも非常に良い考えです。

  1. テーブルに短いエイリアス名を使用する
  2. SELECT句に必要なフィールドをすべてリストします。
    • 示されているように、id列は両方itemsに存在しcategories、このクエリの結果を消費するフロントエンドアプリで参照することをあいまいにします

アイテム名を指定して特定のカテゴリ名を取得するには

select c.name
  from items i
  join itemCategories ic on i.id = ic.itemID
  join categories c on c.id = ic.categoryID
 where i.name = 'itemname'

注:アイテムが複数のカテゴリに含まれる可能性がある場合、これは複数のカテゴリ名を返す可能性があります。

于 2012-11-01T01:48:35.667 に答える