У меня сложная проблема, данные в db имеют три таблицы.
First_DBВставьте данные одной таблицы в db в другую таблицу db.
-- default_users
id username email password
1 Timbog [email protected] vads7y3kkjdfa
2 Marta [email protected] vads7y3kkjdfa
-- default_album
album_id album_name default_user_id
1 Name_Tim 1
3 Katarina 2
-- default_album_img
img_id image_file album_id
3 1320229733.jpg 1
4 3320229733.jpg 3
Second_DB
--users
user_id user_name user_email user_pass user_image
1 Timbog [email protected] vads7y3kkjdfa 1320229733.jpg
2 Marta [email protected] vads7y3kkjdfa 3320229733.jpg
подход я использовал для решения этой проблемы является первым получать все данные по внутреннему соединению, должен ли я использовать полное внешнее соединение и вставьте обязательное поле для моей таблицы, следующий запрос является фактическим, по которому я пытаюсь сделать это:
INSERT INTO bbpin.users (user_name, user_pin, user_email, user_password, user_img)
SELECT default_users.username, default_users.bb_pin, default_users.email, default_users.password
FROM bbmpins_pins.default_users
INNER JOIN bbmpins_pins.default_album_images
ON default_album_images.album_id = default_users.id;
Я скучаю по тому, как я могу сравнить идентификатор двух таблиц в этом соединении, может быть? или этот запрос ошибочен подходом? В двух таблицах, которые являются sepearte в First_DB, может быть несколько записей, как мы можем связать их только с последней записью? Благодаря
, или мы могли бы просто сделать это один за другим, подход patty вставляет все данные из одной таблицы в другую без противоречивой таблицы, и когда это будет сделано, сопоставьте fk с ключом альбома и вставьте его, все равно нужно иметь дело с несколькими значениями –
что, если я удалю первичный ключ таблицы пользователей как уникальный ключ, это поможет. мы можем это сделать? –
Запрос действительно будет зависеть от того, что вы пытаетесь достичь. Если запрос внутреннего соединения создает набор, который является «отсутствующим» строком или имеет «дублированные» строки, тогда это можно решить. Мы могли бы использовать соединения OUTER, чтобы избежать «пропущенных» строк, или мы могли бы избежать объединения, используя коррелированный подзапрос в списке SELECT. Чтобы избежать «повторяющихся» строк, мы могли бы использовать либо GROUP BY, либо агрегатное выражение, либо (снова) коррелированный подзапрос в списке SELECT. Это действительно зависит от того, какой результат вы хотите вернуть. – spencer7593