2013-10-14 31 views
0

我有两个表,如下所示。如何形成MySQL查询算法以将列添加到另一个表中?

句子

 +--------+----------+-----------------------------------------------------------------------+ 
    | id  | language | text                 | 
    +--------+----------+-----------------------------------------------------------------------+ 
    | 519125 | epo  | Mia onklo aĉetis por mi horloĝon kiu estas tre akurata.    | 
    | 519126 | epo  | Mi ne povas akcepti vian donacon.          | 
    | 519127 | uig  | ئۇ پۈتۈن مەملىكەتنى ئارىلاپ چىقماقچى.         | 
    | 519128 | eng  | She's planning to travel the entire country.       | 
    | 519129 | eng  | He's planning to travel the entire country.       | 
    | 519130 | uig  | تاڭنىڭ ئالدىدا قاراڭغۇسى بار.           | 
    | 519131 | epo  | Li trovas kritikindan en ĉio kion mi faras.       | 
    +--------+----------+-----------------------------------------------------------------------+ 

链接

 +------------+--------------+ 
    | sentenceId | translatedId | 
    +------------+--------------+ 
    |  124665 |  1972285 | 
    |  124666 |  279328 | 
    |  124666 |  957578 | 
    |  124667 |  279327 | 
    |  124667 |  440607 | 
    +------------+--------------+ 

它们由数百万行。我想以后sentenceIdtranslatedId喜欢两列添加到第二个表:

 +------------+-------------+--------------+-------------+ 
     | sentenceId | languageId1 | translatedId | languageId2 | 
     +------------+-------------+--------------+-------------+ 

在上表中(sentenceId languageId1)(translatedId languageId2)是对确实如此。 languageId1languageId2分别显示sentenceIdtranslatedId的语言简写。但是语言列中第一个表中定义的sentenceId和translatedId的语言缩写。为了形成该表格,每个sentenceId和translatedId值必须在第一个表格中查找,并且发现语言shorthands必须在languageId1languageId2中被替换。那么我怎么能在桌子上面形成呢?

回答

1

这将你的结果添加到新表(需要之前创建它)

INSERT INTO mynewtable 
SELECT LINKS.sentenceId, SRC_SENT.language AS srcLanguage, 
     LINKS.translatedId, DST_SENT.language AS dstLanguage 
FROM LINKS 
INNER JOIN sentences SRC_SENT ON (LINKS.sentenceId = SRC_SENT.id) 
INNER JOIN sentences DST_SENT ON (LINKS.translatedId = DST_SENT.id) 

如果您想将列添加到表链接,你必须先修改它的结构,然后更新它。

+0

非常感谢您的回复。我仍然无法理解它,SRC_LANG.language是句子.language,但translationId也必须在句子.language列中查找其相应的值。我摆弄了一下,这一个工作了一半,但它缺少languageId2列。这里 '选择links.sentenceId,sentences.language AS languageId1,links.translatedId FROM链接 INNER JOIN句子 ON links.sentenceId = sentences.id;' – kenn

+0

@kenn对不起,我忘了使用别名两个语言领域,现在纠正。尝试更新的一个。 – Teejay

+0

对于我的无知感到抱歉,我感到哑巴,“SRC_LANG.language”,“DST_LANG.language”,他们是新的数据库吗?或者他们取代抽象算法? – kenn

相关问题