我知道这不是一个问题……无论如何,这就是问题所在。
我继承了一个数据库,其中包含 1(一个)表,看起来很像这样。其目的是记录在各个(200 多个)国家发现的物种。
ID
Species
Afghanistan
Albania
Algeria
American Samoa
Andorra
Angola
....
Western Sahara
Yemen
Zambia
Zimbabwe
数据样本将是这样的
id Species Afghanistan Albania American Samoa
1 SP1 null null null
2 SP2 1 1 null
3 SP3 null null 1
在我看来,这是典型的多对多情况,我想要 3 张桌子。物种、国家和物种FoundInCountry
链接表 (SpeciesFoundInCountry) 在物种和国家表中都有外键。
(很难画图!)
Species
SpeciesID SpeciesName
Country
CountryID CountryName
SpeciesFoundInCountry
CountryID SpeciesID
有没有一种神奇的方法可以生成一个插入语句,该语句将根据列名和原始巨型表中有 1 的 SpeciesID 从新的 Country 表中获取 CountryID?
我可以为一个国家做这件事(这是一个展示我想要的东西的选择)
SELECT Species.ID, Country.CountryID
FROM Country, Species
WHERE (((Species.Afghanistan)=1)) AND (((Country.Country)="Afghanistan"));
(巨型表称为物种)
但是使用这种策略,我需要对原始表中的每一列进行查询。
有没有办法在sql中做到这一点?
我想我可以 OR 一堆我的 where 子句并编写一个脚本来制作 sql,虽然看起来不优雅!
有什么想法(或需要澄清)?