Ma problem z update bazy MySql na podstawie tabeli relacji. Do tej pory robiłem to na paroxie i było OK. Przesiadam się na MySql, ale nie mogę sobie z tym problemem poradzić. Przedstawiam sposób jak to do tej pory to robiłem oraz opis baz:
tblPodstawa:
id, Mod, dana1, dana2,dana3
1 10 200 aa bb
2 10 300 cc dd
3 25 200 ee ff
4 25 300 gg hh
5 10 100 ii jj
6 25 100 kk ll
..

tblRelacja:
dana1, danaX, DanaY
200 300 100
400 500 600

Do tej pory robiłem to na paradoxie w ten sposób:

  1. zaczytywałem wiersz z tblPodstawa
    for := 0 to tblPodstawa.RecordCount
    begin
    Szukana:=tblPodstawa.FieldbByName('Dana1').value;
    if tblRelacja.locate('Dana1',Szukana,[loCaseInsensitive]) then
    if not tblDane.locate('Dana1',Szukana,[loCaseInsensitive]) then
    begin
    tblDane.Append;
    tblDane.FieldByName('Dana1').value:=Szukana;
    tblDane.FieldByName('XXX').value:=XXX;
    tblDane.Post;
    end;
    else
    begin
    tblDane.edit;
    tblDane.FieldByName('Dana1').value:=Szukana;
    tblDane.FieldByName('XXX').value:=XXX;
    tblDane.Post;
    end;

następnie jeszcze tak:
for := 0 to tblPodstawa.RecordCount
begin
Szukana:=tblPodstawa.FieldByName('Dana1').value;
Szukana1:=tblPodstawa.FieldByName('Mod').value;
if tblRelacja.locate('DanaX',Szukana,[loCaseInsensitive]) then
tblDane.locate('Mod',Szukana1,[loCaseInsensitive]) then
begin
tblDane.edit;
tblDane.FieldByName('DanaX').value:=Szukana;
tblDane.FieldByName('XXX').value:=XXX;
tblDane.Post;
end;
itd... z DanaY...

wynik jest taki:

tblDane:
id,Mod, dana1, Dana2, Dana3,DanaX, DanaX2,DanaX3 DanaY DanaY2 DanaY3
1 10 200 aa bb 300 cc dd 100 ii jj
2 25 200 ee ff 300 gg hh 100 kk ll
3 ...

W paradoxie to wychodziło a jak to się ma w MySQL?
Na innym forum dostałem rozwiązanie jak to zrobić w PHP, ale ja to potrzebuję w Delphi.