簡體   English   中英

MySQL查詢僅從子表中選擇帶有所有選項的父記錄而不是一些

[英]MySQL query to only select parent record with ALL options from child table NOT some

我正在努力寫一個查詢來檢索同時帶有“ allows”和“ cd player”的汽車。 看來我的查詢返回的是一個或另一個的汽車,而不僅是返回兩個都有的汽車。 這是如何重現我的問題:

    create database `car_sales`;
    use `car_sales`;
    create table car (
        `id` int(11) not null primary key auto_increment,
        `make` varchar(255) not null,
        `model` varchar(255) not null
    );

    create table `option` (
        `id` int(11) not null primary key auto_increment,
        `car_id` int(11) not null,
        `name` varchar(255) not null,
        foreign key (`car_id`) references car(id),
        index(`name`)
    );

    insert into car (`id`,`make`,`model`) values(1,'ford','focus');
    insert into car (`id`,`make`,`model`) values(2,'tesla','P85D');
    insert into car (`id`,`make`,`model`) values(3,'totoya','corolla');
    insert into car (`id`,`make`,`model`) values(4,'volkswagon','polo');

    insert into `option`(`car_id`,`name`) values(1,'arcon');
    insert into `option`(`car_id`,`name`) values(1,'alloys');

    insert into `option`(`car_id`,`name`) values(2,'cd player');
    insert into `option`(`car_id`,`name`) values(2,'arcon');
    insert into `option`(`car_id`,`name`) values(2,'alloys');

    insert into `option`(`car_id`,`name`) values(3,'leather');
    insert into `option`(`car_id`,`name`) values(3,'sunroof');
    insert into `option`(`car_id`,`name`) values(3,'alloys');

    insert into `option`(`car_id`,`name`) values(4,'electric windows');
    insert into `option`(`car_id`,`name`) values(4,'cd player');

然后,我執行以下查詢,該查詢返回具有至少一個功能但不同時具有兩個功能的結果:

select c.*,o.* from car c left join `option` o on (c.id=o.car_id) having o.name in ('alloys','cd player');

請幫助我調整此查詢,以便僅獲得同時具有這兩種功能的汽車!

不需要左連接,因為結果必須具有2個選項。

select make, model
from car c
join `option` o on (c.id = o.car_id)
where name in ('alloys','cd player')
group by make, model having count(*) = 2
;

我強烈建議不要使用mysql關鍵字(選項)作為表名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM