Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SELECT i aktualizacja wartości kolumny na podstawie odrębnej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
pracus
Mam dwie tabele, w których powtarzają się pewne nazwy kolumn.
Chciałbym skonstruować takie zapytanie, które uaktualni (bądź opcjonalnie dołączy na końcu) wartości w tabeli 1 wg tabeli 2, jeśli w niej występują.

Na przykładzie, z tabel:
Kod
table1:
+----+---------+---------+---------+
| id | column1 | column2 | column3 |
+----+---------+---------+---------+
|  1 | A       | B       | C       |
|  2 | D       | E       | F       |
|  3 | G       | H       | I       |
+----+---------+---------+---------+

table2:
+----+---------+
| id | column2 |
+----+---------+
|  1 | ZZZ     |
|  3 | XXX     |
+----+---------+


...chcę otrzymać wynik:
Kod
+----+---------+---------+---------+
| id | column1 | column2 | column3 |
+----+---------+---------+---------+
|  1 | A       | ZZZ     | C       |
|  2 | D       | E       | F       |
|  3 | G       | XXX     | I       |
+----+---------+---------+---------+



Prawie dobrze w tym przypadku działa zwykłe LEFT JOIN, jednak z tym problemem (pomijając, że nie nadpisuje kolumny, tylko dopisuje na końcu nową o tej samej nazwie, ale to jeszcze da się przeżyć), że działa tylko przy
  1. SELECT * FROM table1 LEFT JOIN table2 USING(id)

natomiast ja chciałbym w SELECT wyszczególniać nazwy kolumn do pobrania, a wówczas niestety otrzymuję błąd:
Kod
Column 'column2' in field list is ambiguous


Jakieś pomysły?
Z góry dziękuję wacko.gif
BaN
  1. SELECT t1.id, t1.column1, IFNULL(t2.column2,t1..column2) AS column2, t1.column3
  2. FROM table1 AS t1
  3. LEFT JOIN table2 AS t2 ON t2.id=t1.id
pracus
Magiczne IFNULL...

Dziękuję, jesteś wielki!
Problem rozwiązany 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.