添加到SQL查询的连接

wei*_*gyn 0 mysql sql

我需要在join预先存在的SQL查询中添加"级别"...不幸的是,我不断收到此查询的错误.我可能会摔倒在某处,但我无法理解如何修复它.原始查询如下:

SELECT 
    noleggio.*, 
    nome AS convenzionato
FROM
    anag_convenzionati
RIGHT JOIN (SELECT 
    noleggio.*, targa, dc_standard AS dcstandard
FROM
    veicoli_contratti
RIGHT JOIN (SELECT 
    noleggio.*,
    nome AS assicurazione_pagante
FROM
    anag_assicurazioni
RIGHT JOIN (SELECT
        fatt_sconto_noleggio,
        fatt_prezzo_noleggio,
        id AS idnoleggio,
        numero,
        serie,
        id_convenzionato,
        stato_noleggio,
        modalita_noleggio,
        conducente,
        locatario,
        locazione_in_proprio,
        id_assicurazione_pagante,
        id_veicolo,
        giorni,
        fatt_giorni_noleggio,
        fatt_prezzo_totale_noleggio,
        data_pagamento_cliente_a_convenzionato,
        ore_manodopera,
        IF(locazione_in_proprio = 1, conducente, locatario) AS cedente
FROM
    noleggio_veicoli
WHERE
    ((data_cancellazione IS NULL) OR (data_cancellazione = ''))
) AS noleggio ON noleggio.id_assicurazione_pagante = anag_assicurazioni.id
) AS noleggio ON noleggio.id_veicolo = veicoli_contratti.id
) AS noleggio ON noleggio.id_convenzionato = anag_convenzionati.id;
Run Code Online (Sandbox Code Playgroud)

我需要以moduli_ocr这种方式将结果表与表连接起来:

SELECT 
   noleggio.*
FROM
   (//query//) AS noleggio
        LEFT JOIN
      moduli_ocr ON moduli_ocr.id_noleggio = noleggio.id;
Run Code Online (Sandbox Code Playgroud)

//查询//是上面的代码.

我得到的错误(在MySQL Workbench中运行查询是:

Error Code: 1054. Unknown column 'noleggio.id' in 'on clause'
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我不确定是否必须使用RIGHTLEFT加入,但一旦查询正确"运行",我将检查这一点.

最好的祝福.

小智 5

您似乎将idnoleggio别名分配给字段"id".尝试加入

moduli_ocr.id_noleggio = noleggio.idnoleggio;
Run Code Online (Sandbox Code Playgroud)