如何将第三个条件放入mysql查询中
如果生产商至少售出10辆汽车,我如何实现此查询如何将第三个条件放入mysql查询中,mysql,sql,Mysql,Sql,如果生产商至少售出10辆汽车,我如何实现此查询 SELECT * FROM `car` INNER JOIN producer ON car.producer = producer.id INNER JOIN owner ON car.owner = owner.id WHERE owner.email IS NOT NULL AND producer.email IS NOT NULL AND owner.birth_date >=
SELECT
*
FROM
`car`
INNER JOIN
producer ON car.producer = producer.id
INNER JOIN
owner ON car.owner = owner.id
WHERE
owner.email IS NOT NULL
AND
producer.email IS NOT NULL
AND
owner.birth_date >= car.produce_year
这三张表是:
TABLE car
id integer
owner integer
color varchar
type varchar
producer integer
poduce_time integer
TABLE owner
id integer
first name varchar
last name varchar
address varchar
date_of_birth integer
place_of_birth varchar
email varchar
TABLE producer
id integer
name varchar
address varchar
email varchar
您必须使用
COUNT
:
SELECT
*
FROM
car c
INNER JOIN
producer ON c.producer = producer.id
INNER JOIN
owner ON c.owner = owner.id
WHERE
owner.email IS NOT NULL
AND
producer.email IS NOT NULL
AND
owner.birth_date >= c.produce_year
AND
(SELECT COUNT(*) FROM car WHERE car.producer = c.producer) >= 10
您必须使用
COUNT
:
SELECT
*
FROM
car c
INNER JOIN
producer ON c.producer = producer.id
INNER JOIN
owner ON c.owner = owner.id
WHERE
owner.email IS NOT NULL
AND
producer.email IS NOT NULL
AND
owner.birth_date >= c.produce_year
AND
(SELECT COUNT(*) FROM car WHERE car.producer = c.producer) >= 10
我将在
生产者
上使用第一个内部联接
上提到的条件进行预筛选
SELECT
*
FROM
car
INNER JOIN
( SELECT
producer.*
FROM
producer
INNER JOIN
car ON car.producer = producer.id
GROUP BY
producer.id
HAVING
COUNT(*) >= 10 ) AS p ON p.id = car.producer
INNER JOIN
owner ON car.owner = owner.id
WHERE
owner.email IS NOT NULL
AND
p.email IS NOT NULL
AND
owner.birth_date >= car.produce_year
此外,对where
子句的限制可以翻译为连接
,以减少如下查询:
SELECT
*
FROM
car
INNER JOIN
( SELECT
producer.*
FROM
producer
INNER JOIN
car ON car.producer = producer.id
GROUP BY
producer.id
HAVING
COUNT(*) >= 10 ) AS p ON p.id = car.producer AND p.email IS NOT NULL
INNER JOIN
owner ON owner.id = car.owner
AND owner.email IS NOT NULL
AND owner.birth_date >= car.producer_year
我将在
生产者
上使用第一个内部联接
上提到的条件进行预筛选
SELECT
*
FROM
car
INNER JOIN
( SELECT
producer.*
FROM
producer
INNER JOIN
car ON car.producer = producer.id
GROUP BY
producer.id
HAVING
COUNT(*) >= 10 ) AS p ON p.id = car.producer
INNER JOIN
owner ON car.owner = owner.id
WHERE
owner.email IS NOT NULL
AND
p.email IS NOT NULL
AND
owner.birth_date >= car.produce_year
此外,对where
子句的限制可以翻译为连接
,以减少如下查询:
SELECT
*
FROM
car
INNER JOIN
( SELECT
producer.*
FROM
producer
INNER JOIN
car ON car.producer = producer.id
GROUP BY
producer.id
HAVING
COUNT(*) >= 10 ) AS p ON p.id = car.producer AND p.email IS NOT NULL
INNER JOIN
owner ON owner.id = car.owner
AND owner.email IS NOT NULL
AND owner.birth_date >= car.producer_year
数据模型中没有指定“已售出”。这是什么意思?这在某种程度上等同于某人拥有一辆汽车吗?数据模型中没有指定“已售出”。这是什么意思?这是否相当于有人拥有一辆汽车?