0

我在思考如何编写这个查询时遇到了麻烦。

与我要解决的问题相同的假设问题:

假设我有一张桌子apples。每个apple都有许多属性,例如color_idvariety_id并且orchard_id它们是从中挑选出来的。

color_id和都指的是它们各自的表:variety_id、和。orchard_idcolorsvarietiesorchards

现在,假设我需要查询所有applescolor_id = '3'yellowcolors

我想以某种方式yellow从查询中获取这个值。

说得通?

这是我正在尝试的:

SELECT * FROM apples, colors.id WHERE color_id = '3'
LEFT JOIN colors ON apples.color_id = colors.id

4

3 回答 3

2

这就是你一般的加入方式。无论是否指定颜色,它都会返回所有苹果:

SELECT * 
FROM apples a
LEFT OUTER JOIN colors c ON a.color_id = c.id

如果您只想要黄色苹果,它可能应该是一个内部连接,因为您要求 a.color_id 在 where 子句中不能为空:

SELECT * 
FROM apples a
INNER JOIN colors c ON a.color_id = c.id
WHERE a.color_id = 3

更新:

SELECT *  
FROM apples a 
INNER JOIN colors c ON a.color_id = c.id 
INNER JOIN orchards o ON a.orchard_id = o.id 
WHERE a.color_id = 3 and a.orchard_id = 5
于 2010-04-13T15:41:07.040 回答
1

使用这个 sql 查询:

SELECT apples.*, color.name
FROM apples
JOIN colors ON apples.color_id = colors.id
WHERE colors.id = 3
于 2010-04-13T15:42:04.643 回答
1
SELECT a.*, c.ColorName
FROM Apples a INNER JOIN Colors c ON a.color_id = c.color_id
WHERE c.color_id = 3
于 2010-04-13T15:42:05.573 回答