REPLACE `listy` (`adresat` , `numer` , `data` ) SELECT z.adresat, x.nr_listu, x.DATA FROM typy z LEFT OUTER JOIN temp_info x ON z.id_t = x.typ WHERE x.id = 1225091395
to dziala, ale jeżeli ktoś nie poda numeru listu (bo taka jest możliwość!) to dla danej wysyłki numerem listu przewozowego będzie 0 a to oanacza, że pole z numerem 0 zawsze bedzie aktualizowało sobie datę i typ.
Czy da się zapytaniem mysqlowym zrobić, żeby w przypadku braku listu nie przypisywał on nic, a jeżeli nr będzie to robił co powyżej?
Jak pisałem lecę do pacy, później postaram się trochę rozszerzhyć mój problem jak to dokładnie wygląda...
-- edit --
Jak obiecałem troche wiecej kodu:
REPLACE `listy` (`adresat` , `numer` , `data` ) SELECT z.adresat, x.nr_listu, x.DATA FROM typy z LEFT OUTER JOIN temp_info x ON z.id_t = x.typ WHERE x.id = '".$_GET['ch']."'; INSERT `idlist` ( `id_id` ) VALUES ( '".$_GET['ch']."' ); INSERT `wysylki` ( `id_w` , `typ` , `placowka` , `list` , `osoba` ) SELECT j.id, l.typ, l.placowka, k.id_l, l.osoba FROM temp_info l LEFT OUTER JOIN listy k ON k.numer = l.nr_listu LEFT OUTER JOIN idlist j ON j.id_id = l.id WHERE l.id = '".$_GET['ch']."'; INSERT `dokumenty` ( `wysylka` , `nazwisko` , `pesel` , `numer` , `extra` , `inne` , `uwagi` ) SELECT l.id, k.nazwa, k.pesel, k.numer, k.extra, k.inne, k.uwagi FROM idlist l LEFT OUTER JOIN temp_dok k ON l.id_id = k.id_wysylki WHERE `id_id` = '".$_GET['ch']."'
$_GET['ch'] - to zmienna przesyłająca ID listu podczas wprowadzania danych.
Teraz sprawa ma sie tak. Chciałbym, ażeby:
- w pierwszym zapytaniu jeżeli nie ma listu to żeby dodał się z wartością 0 (tak się robi), ale jeżeli jak później doda ktoś numer listu z identyczną datą i identycznym adresatem (adresatów jest tylko dwóch), to żeby wtedy numer się zaktualizował do wybranego
- reszta kodu w sumie nie jest konieczna , żeby mi pomóc, ale może ktoś wyłapie jakieś moje błędy składniowe

kombinowałem z jakimiś CASE WHEN ... THEN ... END, ale coś chyba składnia mi nie wychodzi, albo nie wiem w którym miejscu to walnąć, a z IF'ami też mi nie idzie. Jakaś mała podpowiedź?
Struktury koniecznych tabel raczej wynikają z zapytań (w każdej tabeli jest jeszcze extra pole ID, które ma ustawiony auto_incediment, który wiadomo sam się zwiększa o jeden jeżeli nie podaje się wartości)
BTW jest jakaś komenda multi_query w MySQL? Jak kombinowałem z mysqli_multi_query wywalało mi polecenia, że nieznana komenda (w MySQL 4 jak i 5.0.6)...
Pozdrawiam,
-- edit --
ok może powiem o co by mi chodziło i ktoś bedzie w stanie pomóc mi.
jest tabelka listy
| id_l | adresat | numer | data
I teraz z formularza przychodzą dane jak wyżej jest adresat, jest numer, jest data, ale czasem numer może być pusty!
Zadaniem zapytania mysql miałoby być dodanie rekordu z adresatem, datą i ewentualnym numerem (jeżeli nie ma niech zostawi puste), i teraz założenia:
- jeżeli nie ma jeszcze listu z danego dnia i/lub do konkretnego adresata - dodaje wpis INSERT INTO VALUES ('adresat','nr_listu','data');
- jeżeli jest wpis z danego dnia i/lub konkretnego adresata ale NIE ma nr_listu - UPDATE SET numer > nr_listu
- jeżeli jest wpis i jest uzupełniony o wszystko niech nie robi nic
Jakieś sugestie? Bo nie ma problemu o wykonanie tego zapytaniami przez PHP, ale po co jak mysql sam może to zrobić
