SQL行名称和行标志

时间:2019-05-17 12:12:24

标签: sql flags

我很难理解行标志。以下问题可以为我清除它:

是否可以在SQL的同一单元格中存储名称及其标志?

考虑:

如果您有一个名为cars的表,其中包含列number_plate, colourbrand_namebrand_name有一个name和一个flag

如何将其存储在单个列中?如果不可能或不建议,请说明原因和方法。

然后如何从给定的cars(基于唯一的country(主键))和国家(number_plate)中获取flag的数量?

2 个答案:

答案 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)

假设nameflag是两个单独的列。使用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%'

Demo