我正在尝试编写一个联接查询,以通过某个子字符串在某个列中进行搜索
我有3张桌子:
SELECT PE.* FROM SCHEMA.PERIPHERAL_TYPE AS PE
left JOIN SCHEMA.TENANT_PERIPHERAL_TYPE AS TPT ON (PE.PERIPHERAL_TYPE_ID = TPT.PERIPHERAL_TYPE_ID)
left JOIN SCHEMA.TENANT AS T ON (TPT.TENANT_ID = T.TENANT_ID)
where
LOWER(CAST (T.TENANT_NAME AS TEXT)) LIKE '%%'AND
LOWER(CAST (PE.PERIPHERAL_TYPE_ID AS TEXT)) LIKE '%%' AND
LOWER(CAST (PE.DEVICE_TYPE AS TEXT)) LIKE '%%' AND
LOWER(CAST (PE.PERIPHERAL_TYPE_NAME AS TEXT)) LIKE '%%' AND
LOWER(CAST (PE.PERIPHERAL_TYPE_BRAND AS TEXT)) LIKE '%%' AND
LOWER(CAST (PE.PERIPHERAL_TYPE_MODEL AS TEXT)) LIKE '%%' AND
LOWER(CAST (PE.PERIPHERAL_TYPE_DESC AS TEXT)) LIKE '%%' AND
TO_CHAR(PE.CREATED_DATE, 'YYYY-MM-DD HH24:MI:SS.MS') LIKE '%%' AND
TO_CHAR(PE.LAST_MODIFIED_DATE, 'YYYY-MM-DD HH24:MI:SS.MS') LIKE '%%' )
这是我的数据库:
TENANT TENANT_PERIPHERAL_TYPE PERIPHERAL_TYPE
====== ====================== ================
id: 1 name: ss [tenantId: 1, peripheral_type_id 1 ] [peripheral_type_id: 1, ...]
[peripheral_type_id: 2, ...]
[peripheral_type_id: 3, ...]
如果我为 TENANT_NAME 列提供了一个值,例如%name%
,则此查询工作正常。我只得到匹配的peripheral types
。
但是当我不提供任何值时(如您在上面的查询中看到的那样),我只会得到可用的记录 在 TENANT_PERIPHERAL_TYPE 中,但是我想从 PERIPHERAL_TYPE
中获取所有值我缺少什么?如何解决我的问题?
谢谢!