2013-11-18 4 views
0

У меня есть 3 стола: пользователи, альбомы, фотографии. У пользователя могут быть альбомы, в каждом альбоме есть фотографии. enter image description hereCalc новый столбец в таблице

Я хочу добавить в таблицу [фотографии] новый столбец userId с правильными данными. Я хочу не только добавить пустой столбец userId, но этот столбец должен иметь значение из табличных альбомов: userId.

Как я могу легко это сделать?

+1

Что вы имеете в виду? 'alter table add column' вещь? – njzk2

+0

http://stackoverflow.com/questions/8291673/how-to-add-new-column-to-android-sqlite-database – JRowan

+0

Я думаю, что неправильный заданный вопрос. Теперь установите некоторые изменения. –

ответ

0

Существует две задачи, чтобы сделать:

Во-первых, добавить столбец в таблицу.

После этого вы захотите заполнить столбец userId. Но в SQLite вы не можете выполнить JOIN в инструкции UPDATE.

Итак, вы должны отрезать его в четыре этапа (я предполагаю, что в вашей таблице фотографий есть только 3 поля, адаптируйте их к своему).

Сначала нужно создать временную таблицу, которая будет содержать окончательные ДАННЫЕ

CREATE TABLE photos_temp (
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    albumId INTEGER NOT NULL, 
    userId INTEGER NOT NULL 
); 

Затем заполнить временную таблицу

INSERT INTO photos_temp(id, albumId, userId) 
    SELECT photos.id as id, 
      photos.albumId as albumId, 
      albums.userId as userId 
FROM  photos 
INNER JOIN albums ON photos.albumId = albums.id; 

Затем удалите исходную таблицу

DROP TABLE photos; 

Наконец, переименовать предыдущую таблицу

ALTER TABLE photos_temp RENAME TO photos; 

Извините, но нет более простого способа сделать это.

+0

Я решил не использовать столбец userId в таблице фотографий. Но в любом случае, @ Gaëtan благодарит за ответ. –

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