[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: update
freaky
Доброго времени суток!

Нужно сделать обновление одного поля в таблице1 по среднему значению из таблицы2, где поле нескольких записей относятся к полю в таблице1 и имеют тип int.

я пытаюсь


UPDATE table1 SET pole1=(SELECT avg(pole23) FROM table2 WHERE pole1=table2.pole23)


что тут ни так? может условие where или в обще по-другому принципы надо сделать?
sergeiss
Цитата (freaky @ 25.02.2014 - 06:47)
UPDATE table1 SET pole1=(SELECT avg(pole23) FROM table2 WHERE pole1=table2.pole23)

Вот это условие WHERE pole1=table2.pole23 что делает? Ты тут хочешь связать внутреннюю таблицу table2 с внешней table1. Но не указываешь таблицу 1. Возможно, ты хотел написать так (pole1 относится к таблице 2, по умолчанию)
WHERE pole1=table1.pole23


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
freaky
в таблице1 есть запись поля name='one', count='0' в это поле нужно записать то что есть в таблице2, а там несколько записей в поле all где разные числовые значения, и в таблице2 есть поле допустим test и у некоторых записей записано test='one', нужно среднее значение полей all записать в поле count таблицы1 надеюсь суть понятна...
Valick
freaky, суть вообще не понятна и кто вас научил именовать поля pole1 ... pole23 ?



_____________
Стимулятор ~yoomoney - 41001303250491
freaky
вроде нормально объяснил, я их так и не называю, только нормальные английские слова по смыслу, а pole23 это просто я здесь написал, первое что в голову пришло...

ладно объясню как есть по сути...

у меня сайт футбольной тематики...

есть таблица с командами. у неё есть поле phis, туда я хочу записать средние данные игроков команды к которой они принадлежат, это данные (физическое состояние, от 1 до 100, int) из одного поля таблицы с игроками..

т.е есть команда, допустим Спартак, у него 25 футболистов, нужно посчитать их среднее физ.состояние, и записать в таблицу clubs where name='Спартак', в таблице players есть поле club='Спартак'...


SELECT AVG(phis) FROM players WHERE club='Спартак'

это простой запрос, а мне нужен update, как я описал выше

вот, надеюсь теперь точно понятно...
Valick
UPDATE com SET phis=(SELECT AVG(phis) FROM players WHERE club='Спартак') WHERE name='Спартак'

только зачем что-то куда-то записывать, если эту информацию можно выводить динамически

_____________
Стимулятор ~yoomoney - 41001303250491
freaky
Запрос конечно работает, но Спартак я привел как пример, таких клубов много, и мне нужно что бы во всех запрос работал.
sergeiss
freaky, я тебе же уже сказал, практически не намеком, а прямым текстом, что у тебя условие было неверно записано. Во внутреннем запросе надо было указать другую таблицу, внешнюю.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
freaky
Цитата (sergeiss @ 25.02.2014 - 05:52)
freaky, я тебе же уже сказал, практически не намеком, а прямым текстом, что у тебя условие было неверно записано. Во внутреннем запросе надо было указать другую таблицу, внешнюю.

так я непонял как именно прописать, поэтому и стал дальше спрашивать...

а если поменять, то запрос вида


UPDATE clubs SET phis=(SELECT phis FROM players WHERE club=players.name)


не работает, выдает Затронуто 0 строк.
Valick
UPDATE com c,(SELECT club, AVG(phis) ap FROM players GROUP BY club) p SET phis=p.ap WHERE c.name=p.club


_____________
Стимулятор ~yoomoney - 41001303250491
freaky
Цитата (Valick @ 25.02.2014 - 06:05)
UPDATE com c,(SELECT club, AVG(phis) ap FROM players GROUP BY club) p SET phis=p.ap WHERE c.name=p.club

Шикарно, огромное спасибо, все работает!
Даже удивительно, давно уже занимаюсь с sql, но не знаю что значат в этом запросе буквы c,ap,p....
GET
Цитата
но не знаю что значат в этом запросе буквы c,ap,p....

псевдонимы
Цитата
UPDATE com c

укороченая запись

UPDATE com AS c

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
freaky
Цитата (ABC @ 25.02.2014 - 06:20)
Цитата
но не знаю что значат в этом запросе буквы c,ap,p....

псевдонимы
Цитата
UPDATE com c

укороченая запись

UPDATE com AS c

а понятно, спасибо, буду знать...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.