Перенос данных из одной таблицы в несколько таблиц - PullRequest
0 голосов
/ 22 мая 2018

У меня есть одна таблица shoutbox_messages с user_id и text.Теперь я добавил несколько новых таблиц chats, chat_users и chat_messages.

. Теперь я хочу вставить данные из chat_messages в новую структуру.Я создал запись в chat, на которую должна ссылаться chat_users

INSERT INTO chat_users (user_id, chat_id)
  SELECT DISTINCT shoutbox_messages.user_id,
    (SELECT chats.id FROM chats WHERE chats.shoutbox = true)
  FROM shoutbox_messages"

Пока все хорошо.Теперь я хочу добавить все сообщения от shoutbox_messages до chat_messages

INSERT INTO chat_messages (chat_user_id, text, text_as_html)
  SELECT chat_users.id,
    (Select shoutbox_messages.text, shoutbox_messages.text_as_html
      FROM shoutbox_messages Where shoutbox_messages.user_id =
        (SELECT DISTINCT chat_users.id
          WHERE chat_users.user_id = shoutbox_messages.user_id
        )
    )
  from chat_users

Это не работает, потому что shoutbox_messages имеют несколько текстов от одного пользователя.Что мне нужно изменить, чтобы это работало?

1 Ответ

0 голосов
/ 23 мая 2018

Проблема в том, что вы пытаетесь вставить несколько столбцов в один столбец.а также не вставлять данные в третий столбец, что, вероятно, не то, что вы хотите сделать.

, как показано здесь: (Select shoutbox_messages.text, shoutbox_messages.text_as_html FROM shoutbox_messages Where shoutbox_messages.user_id = ..., поскольку вы вставляете данные только в текст этого запросане может работать.

pgsql интерпретирует второй запрос как данные только для столбца text

Вы можете захотеть вместо того, чтобы использовать тот синтаксис, который у вас есть в настоящее время, использовать синтаксис sql join, как это было бывыполните то же самое

что-то вроде

SELECT chat_users.id, shoutbox_messages.text, shoutbox_messages.text_as_html
  FROM chat_users
join shoutbox_messages on shoutbox_messages.id = chat_users.id

, просто убедитесь, что вы переписываете мой код в фактический код, необходимый для идентификации каждого столбца в другом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...