Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]kopiowanie rekordu z jednej tabeli do drugiej
Forum PHP.pl > Forum > Przedszkole
maxis88
Witam. Moj problem tyczy sie kopii danych z jednej tabeli do drugiej ze zmiana jedynie jednej komorki... Moglbym to oczywiscie zrobic pobierajac mozolnie kazda komorke i zebrawszy wszystko znowu mozolnie wpisywac w odpowiednie pola drugiej ale mam nadzieje ze jest jakas szybka komenda mogaca rozwiazac ten problem wink.gif
moze ktos mnie chociaz nakierowac ?
wewior
Kopiować możesz np tak:
  1. INSERT INTO tbl_temp2 (fld_id)
  2. SELECT tbl_temp1.fld_order_id
  3. FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

Przykład z manuala:
http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

Jednak nie wiem co chcesz zmieniać i jak w tej sytuacji. Dlaczego nie chcesz pobierać tego do php i potem robić update?
peter13135
insert ino tabela select cos from tabela2

roghatt
  1. INSERT INTO nazwa_tabeli_docelowej (pole_1, pole_2, pole_3)
  2. SELECT pole_1, pole_2, pole_3
  3. FROM nazwa_tabeli_zrodlowej;
  4. /* ewentualnie dodatkowo warunek */
  5. WHERE pole_1 != '';


pierwszy przykład z Google
Warunki to sobie sam dopiszesz jakiekolwiek, tutaj jest przykład
maxis88
Cytat(freelinkz @ 11.08.2011, 12:33:26 ) *
  1. INSERT INTO nazwa_tabeli_docelowej (pole_1, pole_2, pole_3)
  2. SELECT pole_1, pole_2, pole_3
  3. FROM nazwa_tabeli_zrodlowej;
  4. /* ewentualnie dodatkowo warunek */
  5. WHERE pole_1 != '';


pierwszy przykład z Google
Warunki to sobie sam dopiszesz jakiekolwiek, tutaj jest przykład


nie wiem czy dobrze to napisalem, ale póki co nie kopiuje mi nic do drugiej tabeli ani nie wyskakuje błąd...
  1. $polecenie=mysql_query("INSERT INTO items(id, $nick, nazwa, typ, rasa, rodzaj, ilosc, sila, wytrzymalosc, specjalnosc, specjalnosc2, zuzycie, minLVL, LVL, cena, dr, drid) SELECT nazwa, typ, rasa, rodzaj, ilosc, sila, wytrzymalosc, specjalnosc, specjalnosc2, zuzycie, minLVL, LVL, cena, dr, drid FROM ALLitems WHERE id='$drop' ");


ominąłem w SELECT id bo powinno chyba samo się zaktualizować po skopiowaniu, oraz z jasnych przyczyn usunąłem nick w SELECT bo podałem go wcześniej... rozumiem też że ten warunek na końcu tyczy się tabeli z której pobieram dane czyli tak jak normalnie coś bym z niej pobieral ? zmienna $drop ma z pewnością ID elementu który chce skopiować z ALLitems
peter13135
Nie zamknąłeś nawiasu , nie ma select
roghatt
które pole chcesz konkretnie skopiować z jednej tabeli do drugiej bo w Twoim zapytaniu nie ma powiązania i nie wiadomo co chcesz kopiować.
tzn zle pytanie zadalem smile.gif
które pole chcesz zmienić przed skopiowaniem?
mortus
Zapytanie jest źle skonstruowane, ponieważ próbujesz wstawić do tabeli items 17 wartości, a SELECT pobiera tylko 15 wartości. Powinno być:
  1. $polecenie=mysql_query("INSERT INTO items(id, NICK, nazwa, typ, rasa, rodzaj, ilosc, sila, wytrzymalosc, specjalnosc, specjalnosc2, zuzycie, minLVL, LVL, cena, dr, drid) SELECT 0, $nick, nazwa, typ, rasa, rodzaj, ilosc, sila, wytrzymalosc, specjalnosc, specjalnosc2, zuzycie, minLVL, LVL, cena, dr, drid FROM ALLitems WHERE id='$drop' ");

Oczywiście id można pominąć wtedy wyglądałoby to tak:
  1. $polecenie=mysql_query("INSERT INTO items(NICK, nazwa, typ, rasa, rodzaj, ilosc, sila, wytrzymalosc, specjalnosc, specjalnosc2, zuzycie, minLVL, LVL, cena, dr, drid) SELECT $nick, nazwa, typ, rasa, rodzaj, ilosc, sila, wytrzymalosc, specjalnosc, specjalnosc2, zuzycie, minLVL, LVL, cena, dr, drid FROM ALLitems WHERE id='$drop' ");

Musisz tylko zmienić nazwę kolumny z NICK na właściwą.
maxis88
Cytat(mortus @ 11.08.2011, 13:09:00 ) *
Zapytanie jest źle skonstruowane, ponieważ próbujesz wstawić do tabeli items 17 wartości, a SELECT pobiera tylko 15 wartości. Powinno być:
  1. $polecenie=mysql_query("INSERT INTO items(id, NICK, nazwa, typ, rasa, rodzaj, ilosc, sila, wytrzymalosc, specjalnosc, specjalnosc2, zuzycie, minLVL, LVL, cena, dr, drid) SELECT 0, $nick, nazwa, typ, rasa, rodzaj, ilosc, sila, wytrzymalosc, specjalnosc, specjalnosc2, zuzycie, minLVL, LVL, cena, dr, drid FROM ALLitems WHERE id='$drop' ");

Oczywiście id można pominąć wtedy wyglądałoby to tak:
  1. $polecenie=mysql_query("INSERT INTO items(NICK, nazwa, typ, rasa, rodzaj, ilosc, sila, wytrzymalosc, specjalnosc, specjalnosc2, zuzycie, minLVL, LVL, cena, dr, drid) SELECT $nick, nazwa, typ, rasa, rodzaj, ilosc, sila, wytrzymalosc, specjalnosc, specjalnosc2, zuzycie, minLVL, LVL, cena, dr, drid FROM ALLitems WHERE id='$drop' ");

Musisz tylko zmienić nazwę kolumny z NICK na właściwą.



zrobiłem tak jak kazałeś jednak w tabeli "items" nadal nie mam tego rekordu... oczywiscie zamiast NICK dalem odpowiednia nazwe pola komorki..
peter13135
pokaż nam jak wygląda zapytanie z podstawionymi zmiennymi. wyświetl sobie błąd za ponocą echo mysql_error()
mortus
Sprawdź, czy nie ma błędu podczas wykonywania zapytania:
  1. $polecenie = mysql_query("tutaj zapytanie") or die(mysql_error());
maxis88
Unknown column 'maxis' in 'field list'

maxis to ten nick ktory ma zmienic... pod zmienna $nick


ok juz dziala... wystarczylo dodac apostrofy
mortus
No fakt smile.gif
tkucz
Witam odświeżę temat .
jak przy odświeżaniu stron co jest INSERT INTO ...... ble ble kopiuje raz Jeszce to samo . ? Jak ograniczyć kopiowanie a tylko upgrade wybranych kolumn! . Każdy rekord na datę dodanie .
Robię robie zapytanie na sumowanie i zwiększa mi wynik o skopiowane ponownie te same rekordy .
spinq
Cześć wszystkim,

To mój pierwszy post na tym forum, także z góry dziękuję za pomoc.

Mam problem. Mam dwie tabele, jedną pełną rzeczy takich ceny brutto, czy ceny netto czy id produktu. Dla wyjaśnienia mówię oczywiście o bazie SQL. W drugiej tabeli - obecnie pustej mam bardzo wiele różnych kolumn. Chciałbym przenieść wybrane kolumny z pierwszej bazy do drugiej. Jestem kompletnym laikiem.

Mam u siebie praktykanta. Chłopaka, który uczy się by zostać technikiem-informatykiem. On się zarzeka, że się nie da, albo że nie potrafi. Nie chcę się znęcać nad nim, choć korci mnie, by kazać mu przepisać te 11000 tysięcy wierszy. Jeżeli ulitujecie się nad chłopakiem dacie dokładne rozwiązanie, jeżeli moglibyście pomóc poprzez podanie miejsca, gdzie może o tym przeczytać i tego się nauczyć będę dużo bardziej zobowiązany.

Pozdrawiam
nospor
Skoro sie wpinasz w jakis stary temat, to kurcze, wez go przeczytaj.... Toz odpowiedz juz padla
http://dev.mysql.com/doc/refman/5.7/en/insert-select.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.