我遇到了一个复杂的问题,db中的数据有三个表。
的 First_DB
-- default_users
id username email password
1 Timbog Timbog@mail.com vads7y3kkjdfa
2 Marta Marta@mail.com 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 Timbog@mail.com vads7y3kkjdfa 1320229733.jpg
2 Marta Marta@mail.com vads7y3kkjdfa 3320229733.jpg
我用来解决这个问题的方法是首先通过内连接获取所有数据,如果我使用完全外连接并将所需字段插入到我的表中,以下查询是实际的,我正在尝试使用它WOR:
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;
我想念我如何在这个连接中比较两个表的id?或者这个查询都是错误的方法? 在First_DB中有两个是sepearte的表,可能有多个记录我们如何将它们中继到最后一个条目? 感谢
答案 0 :(得分:1)
我没有看到您使用JOIN
的当前方法有任何问题,但可以稍微修改它以使其更具可读性,并且您还必须加入关系表
INSERT INTO bbpin.users (user_id, user_name, user_pin, user_email, user_password, user_img)
SELECT du.id,
du.username,
du.bb_pin,
du.email,
du.password,
dai.image_file
FROM bbmpins_pins.default_users du
JOIN bbmpins_pins.default_album da ON du.id = da.default_user_id
INNER JOIN bbmpins_pins.default_album_images dai
ON dai.album_id = da.album_id;
答案 1 :(得分:1)
看起来您正在尝试从if(!Click(By.linkText("HR Development"))){return;}
if(!Click(By.linkText("ISTQB Agile Tester Extension ( 1/2)"))){return;}
表中检索所有行。并且与每一行一起,还返回default_users
表中的相应行。以及来自default_album
表的相应行。
给定示例数据,使用内部联接的查询将返回指定的结果:
default_album_img
该查询将适用于示例数据。
但是,如果 SELECT u.id AS user_id
, u.username AS user_name
, u.email AS user_email
, u.password AS user_pass
, i.image_file AS user_image
FROM default_users u
JOIN default_album a
ON a.default_user_id = u.id
JOIN default_album_img i
ON i.album_id = a.album_id
中有一行在default_user
中没有匹配的行,则内部联接不会返回该行:
default_album
或者,如果 -- default_users
id username email password
3 branstark bran@winterfell warg2
中有两行或更多行与给定用户匹配,则查询将从default_user返回该行的两个副本...
default_album
如果没有规定在这些情况下要返回的内容,我们就不能推荐查询。