相当新的SQL。
我有2个表,我需要在它们之间创建适当的连接。表:表1和表2。 表1包含以下列:域,实例,项目和上载。 表2包含以下列:域,实例,项目派生,上载和ID。
最终我想将Table2中的ID列引入Table1。但是,项目和项目派生并不完全匹配。相反,项目的价值将在项目推导中找到。
我的想法如下:
Table1.Domain=Table2.Domain
Table1.Instance=Table2.Domain
Table1.Upload=Table2.Upload
Table1.Project在Table2.Project Derivation
中非常感谢任何帮助。
答案 0 :(得分:0)
加入包括LIKE
,以便进行比较
WHERE 'Cloud, Cloud - Config' LIKE '%Cloud - Con%'
查询:
SELECT *
FROM t1
JOIN t2 ON t2.domain = t1.domain
AND t2.instance = t1.instance
AND t2.project_derivation like '%' || t1.project || '%';
但是,在查找名为'Better Plans'
或'Bet'
的项目时,您还会找到项目'Plan'
的条目。这是因为你的桌面设计并不好。您没有正确使用关系数据库系统。如果您的查询对某个字符串的某些部分感兴趣,请分别存储这些部分。
在不了解您的大部分数据的情况下,我建议您使用project_derivation
表,其中包含每个项目派生的一条记录以及相关项目。那么您将不再对子字符串感兴趣,而只是在此表中找到项目派生到项目的链接。
您的数据库设计可能存在更多缺陷。为什么两个表共享域和实例?项目是否仅在两者中具有意义(即,可以有一个项目审核Google.com/Dev和另一个同名的Ebay.com/Dev项目)?这可能没问题,你可以使用复合键,但也许你只是冗余地存储数据。