Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ MySQL _ Update wolnego pola z innego pola

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

  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)

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ć smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)