Problem z utworzeniem relacji

0

Cześć !

Mam problem z jednym zadaniem w SQL. Mianowicie w bazie testowej northwind, utworzyłem tabele słownikową Countries zawierającą wszystkie kraje w bazie (łącznie 25 krajów z 4 różnych baz), przydzieliłem tym krajom numery ID. Kolejnym krokiem powinno być zastępienie kolumn Country w tych 4 tabelach, kolumną CountryID której indetyfikatory będą odpowiadać krajowi z tabeli Countries. I tu się pojawia problem, bo wiem jak dodać tabele, stworzyć relację, ale nie wiem jak zrobić żeby nr ID w nowych tabelach były zgodne.

0

Oczywiście chodziło mi o wyciągnięcie z 4 tabel danych i stworzenie jednej tabeli słownikowej Countries , w której jest lista wszystkich krajów występujących w bazie i nr id . I teraz chciałbym zastąpić w występujących w tych tabelach występujące nazwy krajów na odpowiadające nim numery id, zgodnie z powstałą tabelą Countries.

I teraz dla przykładu dodaje do tabeli Customers kolumnę Country ID :

use
Northwind

alter table Customers
add CountryID int,
Foreign key (CountryID) References Country(ID);

I teraz nie wiem jak dodać do powstałej kolumny nr id, tak żeby były zgodne z tym co jest w tabeli słownikowej

1

Robisz to źle. Najpierw wyciągasz dane z 4 tabel tych krajów każdy kraj ma unikalny symbol na świecie takie 3 znakowe czy cos: https://www.iban.com/country-codes
I teraz w nowej tabeli wstawiasz te kody kraju, a w starych tabelkach robisz pole symbol i dodajesz te symbole zeby mialy odwolanie do twojej jednej tabeli ale po symbolu.
Nie rob zadnych id bo bedziesz musial pilnowac zeby sie zgadzaly. a tak jak dajesz symbol to nie musisz synchro na bazie robic i kazdy moze sobie zaktualizowac tabele keidy chce, czyscici i znowu dodawac bez pilnowania jakiegos ID

0

Po wykorzystaniu UPDATE, w kolumnie CountryID są same 1.

UPDATE Customers
SET CountryID = ID
FROM Country
1

@Rafał Rymuza: To jeszcze użyj wherea

0

Daj jeden rekord jak wyglada z jednej z tych 4 tabel. Jak to wyglada?

0

Znalazłem odpowiedź na stackoverflow.com, wystarczyło powiązać set z joinem:

    update r
    set countryId = c.Id
    from Customers r join
         Country c
         on r.country = c.country;

1 użytkowników online, w tym zalogowanych: 0, gości: 1