Napisany przez: Pyton_000 2.08.2016, 08:15:39
Tabela:
Kod
+----+----------+---------+--------+---------+
| ID | tel | wtel | mtel | htel |
+----+----------+---------+--------+---------+
| 1 | 23423234 | | | 5555555 |
| 2 | | 34343 | 343432 | 66666 |
+----+----------+---------+--------+---------+
Wynik oczekiawny
Kod
+----+----------+---------+--------+---------+
| ID | tel | wtel | mtel | htel |
+----+----------+---------+--------+---------+
| 1 | 23423234 | 5555555 | | 5555555 |
| 2 | 66666 | 34343 | 343432 | 66666 |
+----+----------+---------+--------+---------+
Chcę dla każdego wiersza zrobić taki update że:
- wartość z kolumny `htel` ma być skopiowana do pierwszej wolnej kolumny `tel`, `wtel` lub `mtel`.
- jeśli `tel`, `wtel` lub `mtel` są pełne - brak działania
- wartość z htel powinna zostać na swoim miejscu.
Problem. Jak zrobić update pierwszej wolnej kolumny (reszta powinna zostać pusta jeśli były).
Nie bardzo mam pomysł na ugryzienie tego a wolałbym to załatwić jakąś SQL zamiast pisać skrypty do tego.
Napisany przez: Lion 2.08.2016, 09:04:54
Dodaj kolumnę updated.
Wykonaj trzy zapytania:
UPDATE tabela SET tel = htel, updated = 1 WHERE tel IS NULL AND updated = 0;
UPDATE tabela SET wtel = htel, updated = 1 WHERE wtel IS NULL AND updated = 0;
UPDATE tabela SET mtel = htel, updated = 1 WHERE mtel IS NULL AND updated = 0;
Usuń kolumnę updated.
Napisany przez: trueblue 2.08.2016, 09:09:54
UPDATE telefon SET
mtel= IF(COALESCE(tel)<>'' AND COALESCE(wtel,'')<>'' AND COALESCE(mtel,'')='',htel,mtel),
wtel= IF(COALESCE(tel)<>'' AND COALESCE(wtel,'')='',htel,wtel),
tel= IF(COALESCE(tel,'')='',htel,tel)
Napisany przez: Pyton_000 2.08.2016, 09:30:39
@trueblue It should work...
@Lion proste i jakże banalne.
Zaćma czasami potrafi człowieka zmęczyć