如何为三个表选择的内连接编写SQL

时间:2012-11-01 01:44:48

标签: sql sqlite

我有三张桌子:

物品
ItemCategories
分类

如果ItemCategories包含:
ID
ITEMID
categoryID

如何编写SQL以获取项目的类别名称?

到目前为止,我有:

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

1 个答案:

答案 0 :(得分:3)

这是逗号分隔的表连接的JOIN形式。

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

通常也是个好主意
  1. 为表格使用短别名
  2. 列出ALL,只列出SELECT子句中需要的字段
    • 如图所示,itemscategories中都存在id列,这使得在使用此查询结果的前端应用中引用模糊不清
  3. 获取具有项目名称的特定类别名称

    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'
    

    注意:如果某个项目可以分为多个类别,则可以返回多个类别名称。