Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 想找出仅由一位作者编写且p_id=1的书吗_Sql_Oracle_Oracle Sqldeveloper_Having Clause - Fatal编程技术网

Sql 想找出仅由一位作者编写且p_id=1的书吗

Sql 想找出仅由一位作者编写且p_id=1的书吗,sql,oracle,oracle-sqldeveloper,having-clause,Sql,Oracle,Oracle Sqldeveloper,Having Clause,我有三张桌子 这是Person表: 这是汽车桌: 这是多对多的Person\u car表hloding join列: 现在我想找出由一个人拥有且p_id=1的c_id(汽车id) 这意味着在这个场景中,我应该获得c_id,因为100 bcs c_id 200属于p_id 1和2 请帮助我编写sql查询。您可以使用聚合: select c_id from person_car group by c_id having count(*) = 2

我有三张桌子

这是Person表:

这是汽车桌:

这是多对多的Person\u car表hloding join列:

现在我想找出由一个人拥有且p_id=1的
c_id
(汽车id)

这意味着在这个场景中,我应该获得c_id,因为100 bcs c_id 200属于p_id 1和2


请帮助我编写sql查询。

您可以使用聚合:

select c_id
from person_car
group by c_id
having count(*) = 2                                      -- owned by 2 persons
   and max(case when p_id = 100 then 1 else 0 end) = 1   -- including p_id 100
在MySQL中,我们可以将最后一个条件缩短为:

and max(p_id = 100) = 1

看看你的问题,我知道你想找到只有一个人拥有的汽车,p_id=1只是一个例子。如果是这种情况,请尝试:

select
   c.id as car_id,
   c.color as car_color,
   c.model as car_model,
   p.id as person_id,
   p.first_name || ' ' || p.last_naem as person_name,
from
   car c
   join person_car pc on (pc.c_id = c.id)
   join pesron p on (p.id = pc.p_id)
where
   c.id in (select c_id from peson_car group by c_id having count(1) = 1)

谢谢。

MySQL还是Oracle?请只标记一个数据库。join person\u car pc on(pc.c\u id=c.id)join pesron p on(p.id=pc.p\u id)…这两个join语句将如何工作请解释..我不擅长plsql。@sourav-此连接将提取car和person对的数据。谢谢