Я знаю, что это не вопрос ... во всяком случае, ЗДЕСЬ вопрос.
Я унаследовал базу данных с 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
Есть ли волшебный способ, которым я могу сгенерировать оператор вставки, который будет получать CountryID из новой таблицы Country на основе имени столбца и SpeciesID, где в исходной мега таблице есть 1?
Я могу сделать это для одной страны (это выбор, чтобы показать, что я хочу)
SELECT Species.ID, Country.CountryID
FROM Country, Species
WHERE (((Species.Afghanistan)=1)) AND (((Country.Country)="Afghanistan"));
(мега стол называется видом)
Но, используя эту стратегию, мне нужно будет выполнить запрос для каждого столбца в исходной таблице.
Есть ли способ сделать это в SQL?
Полагаю, я могу ИЛИ загрузить свои предложения where вместе и написать скрипт для создания sql, хотя это выглядит не элегантно!
Есть мысли (или требуется уточнение)?