Witam.
W swojej bazie do tej pory wyszukiwałem po 1 kolumnie i nie było problemu (SELECT...LIKE nazwa="$xxx%")
Teraz jednak doszła druga tabela z alternatywnymi nazwami, opisami i słowami kluczowymi. Dlatego postanowiłem zrobić jedną kolumnę, którą w cronie będe aktualizował złączeniem wszystkich nazw i po tej kolumnie będę szukał zamiast za każdym razem łączyć kilka tabel.
No i mam problem.
Tabela1:
| idProducenta |symbol | nazwa | tekst_do_szukania

Tabela2
| idProducenta | symbol | idWpisu | wartosc | typ | pokaz_na_stronie

(klucze główne boldem)
wymyśliłem takie oto zapytanie:
  1. UPDATE tabela1 SET `tekst_do_szukania` = CONCAT( nazwa, '||' (
  2. SELECT group_concat( wartosc SEPARATOR '||' )
  3. FROM tabela2
  4. WHERE tabela2.idProducent = tabela1.idProducent
  5. AND tabela2.symbol = tabela1.symbol
  6. AND ( typ=1
  7. OR typ=2)
  8. AND pokaz_na_stronie=1
  9. GROUP BY idProducent, symbol )
  10. )


Ale ono nie działa poprawnie, aktualizuje tylko te wpisy, w których jest coś w tym podzapytaniu, dla pozostałych ustawia tekst pusty.

zacząłem więc to zmieniać i doszedłem do czegoś takiego:
  1. UPDATE tabela1 SET `tekst_do_szukania` = CONCAT( nazwa, '||' IF (
  2. SELECT group_concat( wartosc SEPARATOR '||' )
  3. FROM tabela2
  4. WHERE tabela2.idProducent = tabela1.idProducent
  5. AND tabela2.symbol = tabela1.symbol
  6. AND ( typ=1
  7. OR typ=2)
  8. AND pokaz_na_stronie=1
  9. GROUP BY idProducent, symbol )<>"","COKOLWIEK","NIC")
  10. )

ale i tu praktycznie zawsze złącza z "NIC".

Ktoś może mi powiedzieć, co źle robię i czy to w ogóle jest możliwe, czy też tego się nie da zrobić i muszę w tym CRONie zrobić skrypt, które te 650 000 rekordów ręcznie rekord po rekordzie będzie jechał?