sqlite 用于CONTAIN检查和JOIN excel TABLE的SQL查询

kxxlusnw  于 2023-03-23  发布在  SQLite
关注(0)|答案(2)|浏览(150)

Supplier
Requestor
Expected RESULTS
SQL代码:

SELECT T2."Fullname",T2."Town", T2."Age", T1."Surname"
FROM "Requestor" as T2
LEFT JOIN "Supplier" as T1
ON (T2."Fullname" LIKE '%' + T1."Name" + '%')
ORDER BY T2."Fullname" ;

不确定为什么Surname的值没有被填充或传递到预期表中?
INNER JOIN、WILD、EXIST SQL条件

velaa5lx

velaa5lx1#

使用||将两个字符串合并为一个字符串

SELECT T2."Fullname",T2."Town", T2."Age", T1."Surname"
FROM "Requestor" as T2
LEFT JOIN "Supplier" as T1 on T2."Fullname" LIKE '%' || T1."Name" || '%'
ORDER BY T2."Fullname" ;

Demo here

xggvc2p6

xggvc2p62#

您没有说明您想知道的是什么,所以我假设您想知道如何修复JOIN查询。
由于LEFT JOIN显示了来自T2的所有行,因此T1不具有匹配这个相当特殊的JOIN条件的行是唯一合乎逻辑的。你应该用外键连接两个表-就像T2中每个有昵称的行都需要有一个外键列,其中包含你想连接的另一个表的ID。因此,请尝试修复表的结构,并更多地了解JOIN的工作方式。
例如,你应该有一个JOIN语句,如下所示:

SELECT * FROM requestor as T2
JOIN supplier AS T1
ON id = T1.id

ON id = T1.id行中,第一个id提到了T2的ID。如果您有一个中间表来帮助将两个表连接在一起就更好了,它将包含两个实体之间的操作历史-每个实体都有几个操作历史。就像在这个structure of a decent schema中一样。您只能想象可以为这个表创建多少个VIEW
我鼓励你深入学习JOIN在SQL中是如何工作的。它们在真实的世界中相当常见,大多数关于SQL的困难工作都围绕着JOIN,所以一旦你有了足够的经验,知道如何以及何时使用它们,它会让你的生活方式更容易。你还应该对你的表的结构有一个水晶般清晰的理解,知道如何连接它们。

相关问题