联接表中按子字符串的PostgreSQL查询返回部分值

时间:2020-03-05 21:25:38

标签: sql postgresql join left-join

我正在尝试编写一个联接查询,以通过某个子字符串在某个列中进行搜索

我有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

中获取所有值

我缺少什么?如何解决我的问题?

谢谢!

0 个答案:

没有答案