Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Update wolnego pola z innego pola
Pyton_000
post 2.08.2016, 08:15:39
Post #1





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Lion
post 2.08.2016, 09:04:54
Post #2





Grupa: Zarejestrowani
Postów: 148
Pomógł: 14
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
trueblue
post 2.08.2016, 09:09:54
Post #3





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  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)


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 2.08.2016, 09:30:39
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


@trueblue It should work...

@Lion proste i jakże banalne.

Zaćma czasami potrafi człowieka zmęczyć smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 13:57