Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SELECT i INSERT jednoczesnie
Forum PHP.pl > Forum > Bazy danych > MySQL
ALF666
Dobrzy ludzie pomooooocy biggrin.gif

Są 2 tabele w bazie danych. 1-sza to tabela z prestashop ps_category_lang [ z tej tabeli interesują mnie pozycje id_category oraz name ]
2-ga tabela to stworzona przeze mnie ps_category_names [ ma 3 kolumny ID (auto-increment), grupa_towarowa, nazwa_grupy ] i teraz zaczyna się mój problem. Pozycje z kolumny grupa_towarowa odpowiadają id_category z 1-szej tabeli, do nich przyporządkowane są odpowiednie nazwy które mieszczą się w kolumnie name .... o ile wylistowanie tego wyniku wiem jak zrobić to nie mam bladego pojęcia jak wynik zapytania zapisać w 2-giej tabeli w kolumnie nazwa_grupy
tak wygląda moje zapytanie ... pomoże ktoś dokończyć je tak by wynik zapisywał się w "locie" ?

  1. SELECT
  2. ps_category_lang.`name`,
  3. ps_category_lang.id_category,
  4. ps_category_names.grupa_towarowa
  5. FROM
  6. ps_category_lang ,
  7. ps_category_names
  8. WHERE
  9. ps_category_lang.id_category = ps_category_names.grupa_towarowa


Jakieś pomysły na rozwiązanie problemu ?
maly_swd
INSERT into tabela (SELECT ... FROM )
ALF666
No dobra ... domyślam się, że nawiasy są w tym wyrażeniu kluczowym punktem biggrin.gif ...
pytanie ... brzmi czy INSERT into tabela1.kol2 (SELECT tabela2.kol1, tabela2.kol4, tabela1.kol1 ..... .... i w tym momencie już się pogubiłem sad.gif
Pyton_000
Nie, zajżyj do manuala MySQL to się dowiesz.
ALF666
Pyton_000 ... naprawdę nie wiem jak bardzo powinienem być Ci wdzięczny za tak wspaniałą podpowiedź ... bo jestem debilem leniwym i pewno nie zaglądałem tam wcześniej ... sorry ... nie chcesz pomóc .. luz Twoje prawo ... ale nie traktuj z góry kogoś kto pyta bo nie znalazł nigdzie odpowiedzi ...
Pyton_000
Nie zadałeś żadnego konkretnego pytania, więc odesłałem Cię tam gdzie jest wiedza. Luz...

A co do oceniania ludzi którzy nie znaleźli odpowiedzi. Na 70% pytań jest odpowiedź w manualach albo komentarzach do nich, więc nie piernicz głupot że nie da się znaleźć odpowiedzi. No chyba że ktoś nie potrafi szukać, ale to już jego problem.
ALF666
Dobra...jednak musialem wrocic do tego tematu sad.gif

sa dwie tabele
grupy (id,idh,nazwa)
i grupy_copy (id,idh,nazwa,nadrzedna)
potrzebuje wpisac do grupy_copy.nadrzedna kolumne grupy.nazwa ale tylko te pola ktore grupy.id = grupy_copy.idh

ponizsze zapytanie robi to wprawdzie .. ale jako nowe rekordy a nie aktualizacje kolumny grupy_copy.nadrzedna [ aktualnie ta kolumna jest pusta ]

  1. INSERT INTO grupy_copy (nadrzedna)
  2. SELECT
  3. grupy.nazwa
  4. FROM grupy, grupy_copy
  5. WHERE grupy.id = grupy_copy.idh


Pomoze ktos lopatologicznie wytlumaczy gdzie robie blad questionmark.gif


Dziekuje smile.gif
b4rt3kk
Cytat(ALF666 @ 24.03.2015, 14:29:24 ) *
Dobra...jednak musialem wrocic do tego tematu sad.gif

sa dwie tabele
grupy (id,idh,nazwa)
i grupy_copy (id,idh,nazwa,nadrzedna)
potrzebuje wpisac do grupy_copy.nadrzedna kolumne grupy.nazwa ale tylko te pola ktore grupy.id = grupy_copy.idh

ponizsze zapytanie robi to wprawdzie .. ale jako nowe rekordy a nie aktualizacje kolumny grupy_copy.nadrzedna [ aktualnie ta kolumna jest pusta ]

  1. INSERT INTO grupy_copy (nadrzedna)
  2. SELECT
  3. grupy.nazwa
  4. FROM grupy, grupy_copy
  5. WHERE grupy.id = grupy_copy.idh


Pomoze ktos lopatologicznie wytlumaczy gdzie robie blad questionmark.gif


Dziekuje smile.gif

Tu bym proponował update:

  1. UPDATE grupy_copy cp SET nadrzedna = g.nazwa
  2. FROM grupy g
  3. WHERE g.id = gc.idh;
ALF666
zakladam, ze to zapytanie mialo zostac przerobione przeze mnie na nastepujace

  1. UPDATE grupy_copy cp SET nadrzedna = grupy.nazwa
  2. FROM grupy, grupy_copy
  3. WHERE grupy.id = grupy_copy.idh


tyle, ze wyskakuje mi nastepujacy blad

[SQL] UPDATE grupy_copy cp SET nadrzedna = grupy.nazwa
FROM grupy, grupy_copy
WHERE grupy.id = grupy_copy.idh;
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM grupy, grupy_copy
WHERE grupy.id = grupy_copy.idh' at line 2


cos zle przerobilem questionmark.gif
mmmmmmm
  1. UPDATE grupy_copy JOIN grupy ON grupy.id = grupy_copy.idh SET nadrzedna = grupy.nazwa

Ale tak naprawdę ty chcesz zrobic MERGE (UPSERT) , którego w MySQL nie ma...
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.