我有5张桌子
Questions_Answers
AID | QID | otherStuff | Username | UserID | otherStuff
用户
UserID | Username
节点
ID | Type | UserId
问题
ID | oldQ_ID
答案
ID | Question_Link
我必须填写空表Questions_Answers ,并提供其他表格中的信息。
Question_Answer 表应该包含每个答案(行)所属的问题。此外,对于每个答案,用户名和userId。
节点表包含问题和答案。 Type字段有2个可能的值'question'和'answer',指定该行确实是问题还是答案。它包含编写节点的usedId。
在问题和答案表中,ID字段是新ID 。(我在新系统中导入了这些节点) )。这些是应添加到question_answer表中的ID(AID和QID字段,分别用于答案和问题)。
在问题表格中,oldQ_ID应仅用于分配问题的答案,未添加到Questions_Answer表格。
答案表中的Question_Link将每个问题的答案都链接起来,并引用每个问题的旧ID(oldQ_ID)(!)。
还有一件事。我需要在Questions_Answers表中的正确字段中插入字段,跳过无用的字段。
谢谢..
候选解决方案:
INSERT INTO node_comments (cid, nid, name, uid)
SELECT a.nid, q.nid, u.name, u.uid
FROM node AS n
JOIN content_type_answer AS a ON a.nid = n.nid
JOIN content_type_forum AS q ON q.field_oldqid_value = a.field_qlink_value
JOIN users AS u ON u.uid = n.uid
WHERE n.type = "answer";
答案 0 :(得分:2)
<强>更新强>
我更新了使用Node.ID
作为Questions
表的连接关系的答案。我认为这与你所追求的非常接近,如果它不是很正确的话,改变也不应该太难:
INSERT INTO Questions_Answers (AID, QID, Username, UserID)
SELECT a.ID, q.ID, u.Username, u.UserID
FROM Node AS n
JOIN Users AS u ON u.UserID = n.UserID
JOIN Questions AS q ON q.oldQ_ID = n.ID
JOIN Answers AS a ON a.Question_Link = q.oldQ_ID
WHERE n.Type = "answer";
以下是查询的作用:
Node
Type
为answer
的{{1}}中的每一行:
Node.UserID
与Users.UserID
进行比较,以查找Users
表格中的匹配行。Node.ID
与Questions.oldQ_ID
进行比较,以查找Questions
表格中的匹配行。Questions.oldQ_ID
与Answers.Question_Link
进行比较,以查找Answers
表格中的匹配行。Answers.ID
,Questions.ID
,Users.Username
,Users.UserID
,然后将其插入Questions_Answers
表。如果您需要将Node.ID
与答案匹配而不是问题,那么您需要Answers.oldA_ID
表中的Answers
列。您无法将Node.ID
与Questions.ID
进行比较,因为Node.ID
是旧ID,Questions.ID
是新ID。