![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 18.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie
Mam dwie tabele users1 i domeny. Potrzebuje wprowadzić wartości z pola kat_bazowy z tabeli domeny do tabeli users1. Próbuje na sposób podany niżej: Insert into users1 (kat_bazowy) SELECT domeny.kat_bazowy FROM users2 INNER JOIN domeny ON users2.domain_id = domeny.id order by users2.user_id; Dane z wybranego pola są faktycznie dodawane do tabeli users1, ale nie odpowiednio wg klucza tylko na koncu po dotychczasowym ostatnim rekordzie w tabeli users1. Klucz primary jest w obu tabelach zdefiniowany - users2.domain_id = domeny.id. W którym miejscu popelniam błąd? Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Nowe wiersze zawsze są wstawiane na końcu tabeli. Nic z tym nie zrobisz.
Może raczej potrzebujesz UPDATE a nie INSERT ? |
|
|
![]()
Post
#3
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
czemu tu:
masz users2 jak pobierasz z domeny? -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Ma domeny za INNER JOIN.
|
|
|
![]()
Post
#5
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
to nie powinno być tak:
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
A co za różnica? INNER JOIN jest przemienny.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 18.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie dopisałem jeszcze, że tabela users2 to kopia users1.
Zgadza się, oba polecenia są poprawne i zwracaja to samo. Problem jest natomiast w kwestii dodawania rekordów odpowiednio względem klucza. INSERT dodaje na koncu a UPDATE daje tylko jeden rekord:
No chyba że przekombinowałem cos w poleceniu |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Kod UPDATE users1 INNER JOIN users2 ON users1.user_id = users2.user_id INNER JOIN domeny ON users2.domain_id = domeny.id SET users1.kat_bazowy = domeny.kat_bazowy
Ten post edytował Mchl 8.12.2009, 14:05:39 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 18.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Świetnie, działa.
Dzieki
Jakby to polecenie wyglądało jakby user1 było w bazie db1, user2 w bazie db2 a domeny w bazie db3? |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
nazwa_bazy.nazwa_tabeli.nazwa_pola
ale czy można zrobić UPDATE na kilku bazach to nie wiem - musisz sprawdzić sam. Ten post edytował phpion 5.05.2010, 14:33:18 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Można, a w każdym razie nic nie wskazuje na to by nie można było. Tabela to tabela.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 03:43 |