Kopiowanie wartości z jednej tabeli do drugiej

0

Witam, nie wiem jak sobie z tym poradzić.
Korzystam z HediSQL więc powinno być w miarę wygodnie, jednak i tak mam problem.

Mam bazę danych o nazwie "test"m która posiada dwie tabele.

-test
-- tab1 (id_kol, kolor, tlo)
-- tab2 (id_kol, ilosc, kolor, tlo, wymiar)

Chciałbym do tab1(kolor) wprowadzić wszystkie wartości tab2(kolor) przy sprawdzeniu, że tab1(id_kol) = tab2(id_kol).

Próbowałem różne sposoby i albo mam błąd składni, albo że tabela nie istnieje.

Przykład:

INSERT INTO tab1(kolor) SELECT kolor FROM tab2 WHERE tab1.kolor = tab2.kolor;
0

To co jest po INSERT, czyli sam SELECT ... musi być poprawne i działać. U ciebie nie działa.

0

Dziękuję za odpowiedź, możesz napisać jak poprawnie powinno wyglądać to polecenie ?

1

Chciałbym do tab1(kolor) wprowadzić wszystkie wartości tab2(kolor) przy sprawdzeniu, że tab1(id_kol) = tab2(id_kol).

Nie rozumiem. Skoro masz już kolory w tab1 to po co je wstawiać?

SELECT kolor FROM tab2 WHERE tab1.kolor = tab2.kolor;

to twoje zapytanie jest złe, bo w SELECT nie masz tab1.

Jeśli dobrze interpretuję, masz pustą tabelę tab1 i chcesz tam wstawić wszystkie kolory z tab2? Jeśli tak to wtedy:

INSERT INTO tab1(kolor) SELECT kolor FROM tab2 
0

Chciałbym nadpisać nowe wartości, ponieważ w jednej z tabel kolor jest zły, a w drugiej dobry.

1

Chciałbym nadpisać nowe wartości, ponieważ w jednej z tabel kolor jest zły, a w drugiej dobry.

Czyli UPDATE a nie INSERT

UPDATE t1 SET kolor = t2.kolor
FROM tab1 t1
JOIN tab2 t2 ON t1.id_kol = t2.id_kol

Możesz najpierw zweryfikować SELECT:

SELECT t1.kolor, t2.kolor
FROM tab1 t1
JOIN tab2 t2 ON t1.id_kol = t2.id_kol
0

@szarotka: Dziękuję za zainteresowanie pomocą.

Wykonuję (jestem na aktywnej bazie test - nie wiem czy ma to znaczenie i wprowadzam kwarende):

UPDATE tab1 SET kolor = tab2.kolor
FROM tab1
JOIN tab2 ON tab1.id_kol = tab2.id_kol

Jak wykonam takie polecanie to otrzymuję:

Błąd SQL (1064): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM tab1 
JOIN tab2 ON tab1.id_kol = tab2.id_kol at line 2
 Zmodyfikowane wiersze: 0  Znalezionych wierszy: 0  Ostrzeżenia: 0  Czas przetwarzania 0 of 1 zapytanie: 0,000 sec. */

0

Id są te same, identyczne.

0

poprawiłem, dodałem błąd.. który się wyswietla

0

@szarotka nie wiesz, dlaczego pojawi się błąd ?

0

Pomożesz mi zrobić to odpowiednio ?

0

Udało się, wygląda na to, że na początku trzeba było podać dwie nazwy tabel:

UPDATE LOW_PRIORITY tab1, tab2
SET tab1.kolor = tab2.kolor
WHERE tab1.id_kol = tab2.id_kol;

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