Mysql 基于另一个表中的值获取所有值

Mysql 基于另一个表中的值获取所有值,mysql,join,Mysql,Join,这应该很容易,但由于某种原因,我和我的大脑今天不想合作 我有一个表sales,其中包含一个brick\u region列。砖区域始终属于区域。现在,我想在sales中选择属于我选择的特定砖块区域的所有值。我该怎么做 SELECT * FROM sales JOIN brick_regions ON (brick_regions.id = sales.brick_region) WHERE sales.date BETWEEN '2014-01-01' AND '2014-03-30' AND s

这应该很容易,但由于某种原因,我和我的大脑今天不想合作

我有一个表
sales
,其中包含一个
brick\u region
列。砖区域始终属于
区域
。现在,我想在
sales
中选择属于我选择的特定砖块区域的所有值。我该怎么做

SELECT *
FROM sales
JOIN brick_regions
ON (brick_regions.id = sales.brick_region)
WHERE sales.date BETWEEN '2014-01-01' AND '2014-03-30'
AND sales.brick_region = 2
但我希望最后一行是这样:

AND brick_regions.region = [region ID of the brick region with ID 2]

也许可以尝试使用子查询

SELECT * FROM sales 
LEFT JOIN brick_regions ON brick_regions.id = sales.brick_region 
WHERE sales.date BETWEEN '2014-01-01' AND '2014-03-30' 
AND brick_regions.region = (SELECT region FROM brick_regions WHERE id = 2); 

对这个问题的描述很难:) 因此,您希望根据日期从sales中获取一些行,然后 是否从具有所选行的相同区域(按日期)的销售中获取所有记录

如果是,这个怎么样

select * from sales where sales.brick_region IN(
select brick_region from sales WHERE 
WHERE sales.date BETWEEN '2014-01-01' AND '2014-03-30'
)
砖区域始终属于区域表

假设您有
区域
表。所以这个查询可能是

SELECT *
FROM sales
JOIN brick_regions
ON (brick_regions.id = sales.brick_region)
JOIN region
ON (brick_regions.region = region.id)
WHERE sales.date BETWEEN '2014-01-01' AND '2014-03-30'
AND brick_regions.region = 2


我的大脑今天不想合作,好的,你就不能添加
和brick\u regions.region=sales.brick\u region
?@Arion,然后查询如何选择那些不一定属于brick region 2的行?为什么对这样一个琐碎的问题进行所有的投票:)@silkfire哦,好的,我改变了答案。那样更好吗?
SELECT *
FROM sales
JOIN brick_regions
ON (brick_regions.id = sales.brick_region)
JOIN region
ON (brick_regions.region = region.id)
WHERE sales.date BETWEEN '2014-01-01' AND '2014-03-30'
AND region.id = 2