计算每个车主拥有的汽车数量



我正在尝试学习plsql,但在理解一些基本内容时遇到了困难。这是我正在努力解决的一个挑战。我有两张桌子。一个是车主信息,另一个是汽车信息。我想写一个匿名块,将这两个表连接起来,并使用一个基于每个车主注册的汽车数量的for循环打印每个人拥有的汽车数量。此外,我想要一个if语句,它区分1个Car(单数(和2,3个Cars(复数(。

表格如下:

CREATE TABLE owners(
id_nr VARCHAR2(13) PRIMARY KEY,
f_name VARCHAR2(20),
s_name VARCHAR2(20));
CREATE TABLE cars(
reg_nr VARCHAR2(6) PRIMARY KEY,
id_nr REFERENCES owners(pnr),
model VARCHAR2(20),
year NUMBER(4),
date DATE);

结果可能看起来像这样:

19380321-7799,汉斯,安德森,拥有:1辆

19490321-7899,迈克,埃里克森,拥有:2辆汽车

。。等

我尝试了很多不同的方法,但每次都会出错。我将感谢任何帮助和提示,以帮助我理解它。

谢谢!

好吧,这里有一种方法。如果你想练习循环,你可以在里面添加第二个循环,循环到汽车表上,并打印每个车主拥有的所有汽车。

declare
v_suffix varchar2(1);
begin
for o in (select owners.id_nr, f_name, s_name,
(select count(1) from cars where cars.id_nr = owners.id_nr) as num_cars
from owners)
loop
if o.num_cars = 1 
then v_suffix = null -- singular
else v_suffix = 's' -- plural
end if;
dbms_output.put_line(o.id_nr || ', ' || o.f_name || ', ' || o.s_name
|| ' Owns: ' || o.num_cars || ' car' || v_suffix);
end loop;
end;
/

最新更新