Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> kopiowanie dwóch komórek z różnych tabel
siemen
post 24.09.2009, 00:56:21
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.09.2009

Ostrzeżenie: (0%)
-----


Witam

Mam zagwozdkę sciana.gif tego typu, chciałbym z jednej tabeli przekopiować wartości `dial_code` do drugiej
względem name`a

A dokładnie z tabeli `1country_code` przekopiować `dial_code` do `dial_code` drugiej tabeli `2country_all`

Poniżej zamieszczam tabele z przykładowym wypełnieniem.

CREATE TABLE `1country_code` (
`id` int(3) unsigned NOT NULL auto_increment primary key,
`name` varchar(255) default NULL,
`dial_code` int(5) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

REPLACE INTO `1country_code` (`name`,`dial_code`) VALUES
('Albania','355'),
('Germany','49'),
('Japan','81'),
('Norway','47'),
('Romania','40'),
('Russia','7'),
('Spain','34'),
('USA','1');


CREATE TABLE `2country_all` (
`id` int(3) unsigned NOT NULL auto_increment primary key,
`country_name` varchar(510) default NULL,
`code` varchar(5) default NULL,
`dial_code` int(5) default NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

REPLACE INTO `2country_all` (`country_name`,`code`) VALUES
('Afghanistan','AF'),
('Albania','AL'),
('Algeria','DZ'),
('Cameroon','CM'),
('Germany','DE'),
('Norway','NO'),
('Romania','RO'),
('Russia','RU'),
('Spain','ES'),
('USA','US');

takie zapytanie udało mi się zbudować, które wyświetla potrzebne dane, nie umiem ich jedynie przekopiować.

select
c2.name, c2.dial_code,
c3.country_name, c3.dial_code as dial_code3
from
1country_code c2
left join
2country_all c3
on
c3.country_name=c2.name
Go to the top of the page
+Quote Post
thek
post 24.09.2009, 07:03:19
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To już masz prawie wszystko smile.gif Użyj UPDATE, gdzie jako tabelę używasz obu JOINowanych jak tutaj pokazałeś w SELECT. Jako cel pokaż właściwą komórkę w jednej tabeli (2country_all.dial_code), a jako źródło danych komórkę z drugiej tabeli zawierającą kod(1country_code.dial_code). Taka składnia w MySQL jest dozwolona smile.gif

Ten post edytował thek 24.09.2009, 07:05:34


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
siemen
post 24.09.2009, 17:46:10
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.09.2009

Ostrzeżenie: (0%)
-----


Cytat(thek @ 24.09.2009, 07:03:19 ) *
To już masz prawie wszystko smile.gif Użyj UPDATE, gdzie jako tabelę używasz obu JOINowanych jak tutaj pokazałeś w SELECT. Jako cel pokaż właściwą komórkę w jednej tabeli (2country_all.dial_code), a jako źródło danych komórkę z drugiej tabeli zawierającą kod(1country_code.dial_code). Taka składnia w MySQL jest dozwolona smile.gif



hm zrobilem cos takiego

update
c2.name, c2.dial_code,
c3.country_name, c3.dial_code as dial_code3
from
1country_code c2
left join
2country_all c3
set
2country_all.dial_code=1country_code.dial_code

no ale nie bardzo chce działać blinksmiley.gif . Rozumiem ze mam błąd w składni.
Czy moge prosić o pomoc w poprawnym zapisie tego zapytania.
Go to the top of the page
+Quote Post
thek
post 24.09.2009, 18:48:47
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jaka jest składnia UPDATE?
  1. UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value

Więc stosujmy się do niej.
  1. UPDATE 1country_code c2 LEFT JOIN 2country_all c3 ON c3.country_name=c2.name SET c3.dial_code = c2.dial_code WHERE (tu daj jakie chcesz lub wywal WHERE całkiem jeśli ma zrobić dla całej tabeli).
I teraz popatrz czy to jest zgodne z tym co napisałem słownie. Bo na bank działa.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
siemen
post 24.09.2009, 22:24:52
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.09.2009

Ostrzeżenie: (0%)
-----


Cytat(thek @ 24.09.2009, 18:48:47 ) *
Jaka jest składnia UPDATE?
  1. UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value

Więc stosujmy się do niej.
  1. UPDATE 1country_code c2 LEFT JOIN 2country_all c3 ON c3.country_name=c2.name SET c3.dial_code = c2.dial_code WHERE (tu daj jakie chcesz lub wywal WHERE całkiem jeśli ma zrobić dla całej tabeli).
I teraz popatrz czy to jest zgodne z tym co napisałem słownie. Bo na bank działa.



dziękuje za pomoc, bardzo mi to pomogło
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 23:18