使用左连接在 from 子句上添加表

Posted

技术标签:

【中文标题】使用左连接在 from 子句上添加表【英文标题】:add a table on from clause with left join 【发布时间】:2014-08-12 09:19:09 【问题描述】:

你好,请和我一起检查这个 sql 查询

SELECT 
    CAISSE.*
    ,IIf(USERS.USR_NOM_L IS NULL,CAISSE.USR_L, USERS.USR_NOM_L + ' ' + USERS.USR_PREN_L) AS CLIENT_L
    ,IIf(SOCIETE.SOC_ID = 0 ,CAISSE.SOC_L,SOCIETE.REF_L) AS SOC_REF_L 
FROM 
    (   CAISSE 
        LEFT JOIN USERS ON CAISSE.USR_ID = USERS.USR_ID
    ) 
    LEFT JOIN SOCIETE ON CAISSE.SOC_ID = SOCIETE.SOC_ID  
WHERE 
    1=1 ;

我需要添加“and where SOCIETE.SITE='SiteName'” 但这不起作用,因为我还没有在FROM 子句中选择SOCIETE 表。我该怎么做?

【问题讨论】:

您是否有错误消息,或者确切的问题是什么? @Strawberry 是 SQL Server 中使用的函数。该问题很可能被标记为错误。 Salah,你使用的是什么 DBMS? 我正在使用微软访问 问题是当我在左连接中添加条件时,我有“不支持表达式连接” 当您有超过 1 个连接时,每个连接都需要括号。 ***.com/questions/7854969/sql-multiple-join-statement .. 我不明白WHERE 1=1?这是有目的的吗? 【参考方案1】:

我找到了解决问题的方法,谢谢大家

SELECT * FROM (SELECT CAISSE.*,IIf(USERS.USR_NOM_L IS NULL,CAISSE.USR_L,

USERS.USR_NOM_L + ' '     + USERS.USR_PREN_L) AS CLIENT_L,

IIf(SOCIETE.SOC_ID = 0 ,CAISSE.SOC_L,SOCIETE.REF_L) AS SOC_REF_L,SOCIETE.SITE


FROM (CAISSE LEFT JOIN USERS ON CAISSE.USR_ID = USERS.USR_ID) 

LEFT JOIN SOCIETE ON CAISSE.SOC_ID = SOCIETE.SOC_ID)


WHERE SOCIETE.SITE='SiteName';

【讨论】:

以上是关于使用左连接在 from 子句上添加表的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL同表左外连接多表

mysql优化5表左连接

交叉表左连接,Django ORM

MYSQL 表左连接 ON AND 和ON WHERE 的区别

mysql4.0中一表关联多表左连接sql写法:

在 from 子句 *and* where 子句中添加连接条件使查询更快。为啥?