Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] INSERT INTO (SELECT)
Forum PHP.pl > Forum > Przedszkole
lelun
Witam.
Mam problem z zagniezdzeniem SELECTa zaraz po INSERT INTO, prawdopodobnie popelnilem jakis blad w skladni, jednak nie potrafie tego poprawic...

Sa tabelki: log, czapka, szalik, rekawiczki

czapka, szalik, rekawiczki(
ID int NOT NULL AUTO_INCREMENT,
nazwa char(100),
PRIMARY KEY(ID)
);

log(
ID int NOT NULL AUTO_INCREMENT,
data timestamp,
ID_OBCY int NOT NULL,
skad char(20),
nazwa char(100),
PRIMARY KEY(ID)
);

W logu sa rekordy ktore usunelem z pozostalych tabel, wiec kiedy chce je przywrocic wklepuje tak:

  1. INSERT INTO (SELECT skad FROM log WHERE ID ='3') (`id`, `nazwa`) VALUES ((SELECT ID_OBCY FROM log WHERE ID ='3'),(SELECT nazwa FROM log WHERE ID ='3'))


blad wywala przy pierwszym "SELECT" zaraz po "INSERT INTO", reszta smiga. docelowo bedzie wygladalo to tak:

  1. INSERT INTO czapka (`id`, `nazwa`) VALUES ('10','zimowa');


dzieki za poswiecenie czasu, pozdrawiam smile.gif


jaslanin
Nie ma możliwości by przy pomocy podzapytania (subquery) wydobyć string który później będzie używany jako nazwa tabeli (być może jest jakaś "brudna sztuczka"). Sam taki pomysł/potrzeba wskazuje na błędne zaprojektowanie bazy danych, więc radzę przemyśleć jej budowę.

Oczywiście możesz to zrobić używając dwóch zapytań i użyć np. PHP. Lub skorzystać z zmiennych i prepared statements syntax mysql'a.
lelun
Dzieki za propozycje, zrobilem posrednio, przez php i 2 zapytania smile.gif

baza napewno jest zle zaprojektowania, nigdy nie mialem z tym stycznosci.

pozdrawiam.
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.