Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]kopiowanie rekordu z jednej tabeli do drugiej, ze zmianą jednej danej
maxis88
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


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 ?
Go to the top of the page
+Quote Post
wewior
post
Post #2





Grupa: Zarejestrowani
Postów: 200
Pomógł: 8
Dołączył: 24.09.2003

Ostrzeżenie: (10%)
X----


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?


--------------------
- - -
PHP, HTML, JS, Quick.Cms v6.4, Quick.Cart v6.7, Simlery
- - -
Go to the top of the page
+Quote Post
peter13135
post
Post #3





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


insert ino tabela select cos from tabela2



--------------------
:)
Go to the top of the page
+Quote Post
roghatt
post
Post #4





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


  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
Go to the top of the page
+Quote Post
maxis88
post
Post #5





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


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
Go to the top of the page
+Quote Post
peter13135
post
Post #6





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Nie zamknąłeś nawiasu , nie ma select


--------------------
:)
Go to the top of the page
+Quote Post
roghatt
post
Post #7





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


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?

Ten post edytował freelinkz 11.08.2011, 12:01:30
Go to the top of the page
+Quote Post
mortus
post
Post #8





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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ą.
Go to the top of the page
+Quote Post
maxis88
post
Post #9





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


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..
Go to the top of the page
+Quote Post
peter13135
post
Post #10





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


pokaż nam jak wygląda zapytanie z podstawionymi zmiennymi. wyświetl sobie błąd za ponocą echo mysql_error()


--------------------
:)
Go to the top of the page
+Quote Post
mortus
post
Post #11





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Sprawdź, czy nie ma błędu podczas wykonywania zapytania:
  1. $polecenie = mysql_query("tutaj zapytanie") or die(mysql_error());
Go to the top of the page
+Quote Post
maxis88
post
Post #12





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


Unknown column 'maxis' in 'field list'

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


ok juz dziala... wystarczylo dodac apostrofy

Ten post edytował maxis88 11.08.2011, 12:26:57
Go to the top of the page
+Quote Post
mortus
post
Post #13





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


No fakt smile.gif
Go to the top of the page
+Quote Post
tkucz
post
Post #14





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.08.2010

Ostrzeżenie: (10%)
X----


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 .
Go to the top of the page
+Quote Post
spinq
post
Post #15





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 19.04.2016

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 20.08.2025 - 13:22