2013-06-07 7 views
0

Я достаточно компетентный программист SQL, но мои навыки по-прежнему в значительной степени относятся к доменам простых инструкций INSERT, SELECT, UPDATE с случайным LIKE и т. Д., Которые я пытаюсь сделать. является более сложным. Вот сценарий.SQL для обновления столбца в измененной таблице

  1. У меня есть три стола.
  2. В таблице 1, *users* указаны пользователи с помощью идентификатора пользователя, uid. Пользователи могут иметь один или несколько субсчетов
  3. Таблица 2 *accounts* ведет учет субсчета для каждого пользователя, среди прочего, столбцы Uid и Sid где UID, которая определена в *users* таблице.
  4. Таблица 3, *data* в настоящее время хранения некоторых данных, в течение данных столбца, который ассоциируется с конкретным субсчете, SID.

Вещь, которую я только что понял, заключается в том, что нет особых причин блокировать использование пользователями этих данных в субсчетах. Нет проблем - я могу изменить свой поиск подмножества данных SQL для работы с uid. Однако, учитывая частоту таких поисков, кажется, стоит просто заклеить в колонке uid в *data*.

Для этого я должен был бы написать некоторые умные SQL, что бы получить UID, пары Sid из *accounts* таблицы и использовать эту информацию для обновления вновь созданной Uid столбец в данных таблицы. Это я должен признать, что я не знаю SQL.

Следует упомянуть, что система, использующая эти данные, сейчас находится в производстве и имеет несколько 100 пользователей, поэтому возможность просто действовать так, как будто их нет, недоступно. Не очень важно, я думаю, но я должен отметить, что uid и sid - это алфавитно-цифровые strinsg с индексированными обеими столбцами.

Я был бы очень признателен всем, кто может помочь с этим.

+0

Я должен упомянуть, что я мог бы сделать это с местом PHP. Однако, учитывая, что мне нужно внести изменения в живую среду, правильный бит SQL звучит как лучший вариант - не говоря уже о том, что я хотел бы улучшить свои SQL-шаблоны в любом случае :-) – DroidOS

ответ

0

Mysql может делать обновления на основе соединений и на основе чтения вашей схеме, вот что я хотел бы сделать ...

UPDATE accounts a, data d 
set d.uid=a.uid 
where a.sid=d.sid 
and d.uid is NULL 
+0

Большое спасибо. Это сделал трюк. Очень признателен. – DroidOS

+0

Рад помочь! –

Смежные вопросы