首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询多表选择

问SQL查询多表选择
EN

Stack Overflow用户
提问于 2010-04-07 05:01:44
回答 4查看 144关注 0票数 0

我有三张桌子,

定义一些一般项的类别表有一个“

  • Section”列( sections.
  • Category key).
  • Product表->有一个“->”列(外键)。

我想要得到所有属于X部分的产品。

我该怎么做呢?

从select选择?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-07 07:15:04

这里有很多相同的答案。然而,由于某种原因,它们都加入了Section表,这(很可能)是不必要的。

代码语言:javascript
复制
select
  p.*

from
  Product    p,
  Category   c

where
  p.category_id = c.id and
  c.section_id = 123
;

根据@nemiss的请求,显式ANSI JOIN语法:

代码语言:javascript
复制
select
  p.*

from Product    p

join Category   c
  on c.id = p.category_id
 and c.section_id = 123
;

包含Section表的可能原因:根据部分名称(而不是ID)选择产品。

代码语言:javascript
复制
select
  p.*

from Product    p

join Category   c
  on c.id = p.category_id

join Section    s
  on s.id = c.section_id
 and s.name = 'Books'
;

如果执行此操作,则需要确保Section.name已被索引

代码语言:javascript
复制
alter table Product add index name;
票数 0
EN

Stack Overflow用户

发布于 2010-04-07 05:04:11

代码语言:javascript
复制
Select 
   prod.*
FROM
   Product prod
   INNER JOIN Category cat ON prod.category = cat.id
   INNER JOIN Section sec ON cat.section = sec.id
WHERE
   sec.id = X
票数 4
EN

Stack Overflow用户

发布于 2010-04-07 05:03:12

代码语言:javascript
复制
select s.section, p.*
from section s
inner join category c on c.section = s.section
inner join product p on p.category = c.category
where s.section = 'section1'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2588304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档