update v MySQL

8 отговора 368 прегледа
#1

update v MySQL

Искам да напиша нещо такова

UPDATE table1 SET pole1='bla-bla' WHERE pole2=table2.pole15

обаче МySQL-a казва , че table2 му е непозната

къде бъркам?
В книгата на Дюбоа за синтаксиса на UPDATE пише, че след WHERE следва were_expr.
какво му е на "pole2=table2.pole15"?

Отговор
в отговор на ano #2

Re: update v MySQL

normalno e da dava greshka.

moje bi shte e po-lesno, ako kajesh kakvo tochno se opitvash da napravish. kakuv e smisulut na table2.pole15 Taka napisano tova niama smisul, koy red na pole15 imash predvid?

There are only 10 types of people in this world: those who understand binary and those who don't
Отговор
в отговор на netKo #3

podrobnosti

Имам една таблица с инфо за клиенти - info_za_klienti. Едно от полетата е телефона - tel, а друго - името му - ime.
Иамам и др. таблица с информация за проведени телефонни разговори - tel_razgovori. Едно от полетата е тел. номер, с който е говорено - tel.
Искам по телефонния номер да разпозная дали разговора е бил с клиент и ако е така да попълня полето govoreno_s в tel_razgovori с името на клиента.
Виждаше ми се смислено да направя така:

UPDATE tel_razgovori
SET govoreno_s=info_za_klienti.ime
WHERE info_za_klienti.tel = tel_razgovori.tel

но явно има някакъв проблем.

Отговор
в отговор на ano #4

Re: podrobnosti

Мисля, че в MySQL няма да мине, но пробвай

UPDATE tel_razgovori
SET govoreno_s=(select ime from info_za_klienti where info_za_klienti.tel=tel_razgovori.tel )


Но-о-о...!
Не е зле да попрочетеш нормализациите

Отговор
в отговор на NDeu #5

Re: podrobnosti

не минава

Отговор
в отговор на ano #6

Re: update v MySQL

Ами да: [линк]

"1.8.3 Things That Must be Done in the Near Future
Atomic multi-table updates:
UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;"


обаче не мога да чакам да излезе MySQL 3.24.

Отговор
в отговор на ano #7

Re: podrobnosti

да, не минава. моят опит показва, че mysql не позволява в update изрази да има обръщения към друга таблица, въпреки че в документацията не съм срещал подобно ограничение (salle да ме поправи ако греша).
проблема се решава така:

SELECT razgovori.*, klient.name FROM razgovori LEFT JOIN klient on (razgovoti.tel=klient.tel) ......

идеята надявам се е ясна (понаучил съм и аз нещо от тоя форум :-)

Отговор
в отговор на ano #8

Re: update v MySQL

Zashto naistina shte dibrirash informacia (vij zabelejkata za normalizaciayata).

Ako taka sa ti postroeni tablicite i v daden moment iskash da vidish dali sred telefonnite povikvaniya ima takiva i s klienti, pravish go LEFT OUTER JOIN (kakto beshe pokazan).

Ako vse pak durjish da imash informaciata dublirana, shte se grijish pri vseki nov zapis ili promiana na zapis, podhodiashto da promeniash i zapis v drugata tablica

There are only 10 types of people in this world: those who understand binary and those who don't
Отговор
в отговор на ano #9

Re: update v MySQL

3.24 няма да има - почти 100% съм сигурен :)

4.1 е версията която поддържа "подзаявки" и от доста време е в процес на разработка ... но е прекалено рано дори за alpha

salle.online.bg/sig
Отговор