交叉引用表并将结果插入到另一个表中

时间:2018-07-30 14:21:42

标签: php sql

所以我有3个表,如下所示:

表1-猫-具有以下结构:

  id   name       plural_name 
   0   painters   painters
   1   builders   builders

表2-位置-具有以下结构

       place_id   place_name       classification
       243        painter comp     painters
       230        builder comp     builders

表3-rel_place_cat-具有以下结构

      id    place_id    cat_id 

        0   243         0
        1   230         1

所以基本上我需要运行一个SQL命令来查找表1中的类别ID号和表2中的place_id并将数据插入表3中

可以做到吗?

谢谢

2 个答案:

答案 0 :(得分:0)

类似:

insert into table3(place_id, cat_id) select place_id, cat_id from(select place_id, cat_id from table1 inner join table2 on table1.name = table 2.classification)

应该工作。

答案 1 :(得分:0)

是否要使插入也可重复?
然后,您也可以加入关系表。
并且仅插入缺少的关系。

示例查询:

INSERT INTO rel_place_cat (place_id, cat_id) 
SELECT p.place_id, c.id 
FROM cats c 
JOIN places p ON p.classification = c.plural_name
LEFT JOIN rel_place_cat r ON (r.place_id = p.place_id AND r.cat_id = c.id)
WHERE r.id IS NULL
GROUP BY p.place_id, c.id;

不确定将“分类”加入“ plural_name”还是“ name”会更好。
在示例中它们还是一样。
但是“分类”中的这些值都是复数,因此将“ plural_name”用于连接。