-2

我有三张桌子:

项目
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 列itemscategories这使得在使用此查询结果的前端应用程序中引用它变得不明确

获取给定项目名称的特定类别名称

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 回答