我很难理解行标志。以下问题可以为我清除它:
是否可以在SQL的同一单元格中存储名称及其标志?
考虑:
如果您有一个名为cars
的表,其中包含列number_plate, colour
和brand_name
。 brand_name
有一个name
和一个flag
。
如何将其存储在单个列中?如果不可能或不建议,请说明原因和方法。
然后如何从给定的cars
(基于唯一的country
(主键))和国家(number_plate
)中获取flag
的数量?>
答案 0 :(得分:0)
我认为,您正在尝试设计模式,但还没有完全掌握外键。
在您的示例中,您将具有以下表格:
country:
country_id name continent
-----------------------------------
1 Germany Europe
2 Japan Asia
3 USA N.America
Brand
Brand_id name country_id (foreign key)
---------------------------------------------
1 Mercedes 1
2 Toyota 2
3 BMW 1
4 Chrysler 3
Car
Number_plate colour brand_id
------------------------------------------
xxx-yy-zz Green 1
aa-bb-cc Red 1
kkk-l-mmm Orange 2
....
要根据品牌所属的国家/地区来查找汽车数量,您可以执行以下操作:
select country.name,
count(*)
from car
inner join brand on car.brand_id = brand.brand_id
inner join country on brand.country_id = country.country_id
group by country.name
答案 1 :(得分:0)
假设name
和flag
是两个单独的列。使用concat
函数可以将它们存储到名为brand_name
的单个列中。
select number_plate, colour, concat(name,' ',flag) as brand_name from cars
基于标志获取cars
(唯一)的计数
select * from
(select
distinct number_plate,
colour,
concat(name,' ',flag) as brand_name from cars
) a
where brand_name like '%UK%'