Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Update wolnego pola z innego pola
Forum PHP.pl > Forum > Bazy danych > MySQL
Pyton_000
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.
Lion
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.
trueblue
  1. UPDATE telefon SET
  2. mtel= IF(COALESCE(tel)<>'' AND COALESCE(wtel,'')<>'' AND COALESCE(mtel,'')='',htel,mtel),
  3. wtel= IF(COALESCE(tel)<>'' AND COALESCE(wtel,'')='',htel,wtel),
  4. tel= IF(COALESCE(tel,'')='',htel,tel)
Pyton_000
@trueblue It should work...

@Lion proste i jakże banalne.

Zaćma czasami potrafi człowieka zmęczyć smile.gif
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.