从其他表中填写新表

时间:2015-03-01 16:31:37

标签: mysql sql

我有3张桌子:

  1. 问题
  2. 标记
  3. questions_tags - >数据透视表(多对多关系)
  4. 我需要创建一个名为" tags_languages"的新表。并根据问题的语言(多对多关系)填写标签的语言来自"问题"和"标签"表

    表格结构:

    "问题"表

    id     text     language_id
    1     What..        1
    2     How...        1
    3     Is...         2
    4     Is...         2
    5     Where..       3
    

    "标记"表

    id     text
    1      London
    2      England
    3      ball
    4      love
    5      yellow
    

    " questions_tags"表

    id     question_id     tag_id
    1          1              1
    2          1              2
    3          2              1
    4          2              2
    5          2              3
    6          1              3
    7          3              2
    8          2              4
    9          1              4
    10         4              3
    

    必填表:

    " tags_languages":(tag_id& language_id) - >复合主键

    tag_id     language_id
      1             1
      2             1
      2             2
      3             1
      3             2
      4             1
    

    感谢,

1 个答案:

答案 0 :(得分:1)

这会生成您提到的输出:

SELECT  qt.tag_id, q.language_id
    FROM  questions q
    JOIN  questions_tags qt ON qt.question_id = q.id;

这是错误的"把它放到一个表中,因为你总是可以在飞行中重建它。 (数据库中的冗余数据是禁止的。)

在SELECT前面粘贴它将创建表:

CREATE TABLE tags_languages (
    PRIMARY KEY(tag_id, language_id) )

"许多一对多"和"枢轴"不是同义词。

也许你真正的目标是超越"我需要创造新表"。你愿意讨论吗?