如何将第三个条件放入mysql查询中

如何将第三个条件放入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 >=

如果生产商至少售出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 >= 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

数据模型中没有指定“已售出”。这是什么意思?这在某种程度上等同于某人拥有一辆汽车吗?数据模型中没有指定“已售出”。这是什么意思?这是否相当于有人拥有一辆汽车?