Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kopiowani rekordów z tabeli do tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
marcintom
zaluzmy ze mamy

tabele_a i tabele_b ( kopiujemy z a do b )
obydwie mają po 30 kolumn typowo takich samych

w tym w obydwu tabelach pierwsze pola sa auto_increment
a drugie sa kluczami obcymi (InnoDb) z tym ze do roznych tabel

mam w garsci ( w zmiennej ) nowy id klucza obcego który powinien sie znalez w tabeli_b

czyli krotko chce skopiowac 28 kolumn jendą pozostawić do automatycznego wypelnienia a druga wypelnic po swojemu ze zmiennej

glowny problem polega na tym ze w zwiazku z tym ze tych kolumn jest duzo chce sie ustrzec wypisywanie ich duzej ilosci bo to polecenie bedzie sie
przewijac w kodzie wiec to bede setki linijek kodu ( bez sensu )
gdy przygladalem sie na skladnie insert into select w dokumentacji nie dostrzeglem mozliwosci wykorzystania tego polecenia

Moze ktos bedzie wiedzial jak rozwiazac ten problem
kossa
Może się Tobie przyda:
insert select

Łukasz
marcintom
no właśnie tak jak wspominałem wcześniej
nie bardzo wiedze możliwość zastosowania tej skladni

a jeżeli jednak bylaby taka mozliwosc to bardzo prosze o zaprezentowanie jakiegos przykladu

PS
dzieki za poswiecenie uwagi
jurek38
Spróbuj tak:
INSERT INTO nazwa_tabeli_docelowej
SELECT lista_kolumn FROM
nazwa_tabeli_źródłowej
WHERE warunek
marcintom
hmm albo się nie rozumiemy albo ktoś nie dokońca się wczytał w treść mojego zapytania
wiec daje przyklad

tabela_a
(id primary key,
id2 foreign key ( tabela_c.id),
col3,
col4,
col5,
.
.
.
col50
)

tabela_b
(id primary key,
id2 foreign key ( tabela_d.id),
col3,
col4,
col5,
.
.
.
col50
)

kopiujemy z a do b
z tym ze w b bedzie zmieniony id2 na taki jaki bedzie w tabela_d.id
gantel
Ja mam podobny problem z tym ze:
- chce wykonac kopie rekordu w obrebie tej samej tabeli
- pole id jest typu int, jest kluczem i posiada przypisana funkcje auto_increment


  1. INSERT INTO raporty SELECT * FROM raporty WHERE id='$_POST[id]'


proboje dodac na koncu ON DUPLICATE KEY UPDATE id=''

i wtedy chyba powinno przydzielic nastepny numer id do kopii rekordu,

ale, nie robi wtedy wogule kopii tego wiersza, tylko do pola przypisuje 0

Juz sobie poradzilem z tym zrobilem tak:

  1. INSERT INTO raporty (pole1, pole2) SELECT pole1, pole2 FROM raporty WHERE id='$_POST[nr]'


pominalem poprostu pole id ktore powinno byc unikalne, i teraz kopiuje rekord i przydziela kopii nowe id funkcja auto_increment
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.