2 query not work

  • Creatore Discussione Creatore Discussione max1974
  • Data di inizio Data di inizio

max1974

Utente Attivo
7 Mar 2013
107
0
16
ragazzi scusate sono di nuovo qui a chiedere aiuto a voi....
mysql ho 2 query
la prima è questa
PHP:
SELECT t1.id,t1.id_auto,tb_auto.Targa,tb_auto.Descrizione,tb_auto_tipo.Descrizione AS D_sca_man, '0' AS type,(t1.last_km+t1.km) AS proxima       FROM tb_auto_manutenzioni t1
LEFT JOIN tb_auto ON t1.id_auto = tb_auto.id
LEFT JOIN tb_auto_tipo ON t1.id_tipo = tb_auto_tipo.id
WHERE t1.id_auto ='1'

la seconda questa
Codice:
SELECT t2.km_f AS km_last 
FROM tb_auto_percorsi t2
WHERE t2.dal= (SELECT MAX(t3.dal)as MaxData FROM tb_auto_percorsi t3 WHERE t3.id_auto='1')

le due query lanciate singolarmente funzionano perfettamente, ma quando provo ad unirle nel modo qui sotto mi da
errore "#1054 - Unknown column 't1.id_auto' in 'on clause' "

Codice:
SELECT t1.id,t1.id_auto,tb_auto.Targa,tb_auto.Descrizione,tb_auto_tipo.Descrizione AS D_sca_man, '0' AS type,
(t1.last_km+t1.km) AS proxima,qr1.km_last                                           
FROM tb_auto_manutenzioni t1,(
                                                            SELECT t2.km_f AS km_last     
                                                            FROM tb_auto_percorsi t2
                                                            WHERE t2.dal= (SELECT MAX(t3.dal)as MaxData FROM tb_auto_percorsi t3 WHERE t3.id_auto='1')
                                                          ) AS qr1
LEFT JOIN tb_auto ON t1.id_auto = tb_auto.id
LEFT JOIN tb_auto_tipo ON t1.id_tipo = tb_auto_tipo.id
WHERE t1.id_auto ='1'
 
la select che restituisce il valore, deve essere elencata prima della "FROM"

SQL:
SELECT
t1.id
,t1.id_auto
,tb_auto.Targa
,tb_auto.Descrizione
,tb_auto_tipo.Descrizione AS D_sca_man
,'0' AS type
,t1.last_km + t1.km AS proxima
,qr1.km_last
,( SELECT t2.km_f AS km_last    
   FROM tb_auto_percorsi t2
   WHERE t2.dal = (SELECT MAX(t3.dal)as MaxData FROM tb_auto_percorsi t3 WHERE t3.id_auto='1')
)
FROM tb_auto_manutenzioni t1
LEFT JOIN tb_auto ON t1.id_auto = tb_auto.id
LEFT JOIN tb_auto_tipo ON t1.id_tipo = tb_auto_tipo.id
WHERE t1.id_auto ='1'

non avendo mysql con cui provare, potrebbe essere necessario scrivere
Codice:
,( SELECT t2.km_f
   FROM tb_auto_percorsi t2
   WHERE t2.dal = (SELECT MAX(t3.dal)as MaxData FROM tb_auto_percorsi t3 WHERE t3.id_auto='1')
) km_last

prova quale delle due scritture funziona,
non ho verificato altre condizioni di errore
 
  • Like
Reactions: max1974
grazie 100 Marino.... mi hai illuminato sullerrore che commettevo, la query corretta è si prima dell FROM...
Codice:
SELECT t1.id ,t1.id_auto ,tb_auto.Targa ,tb_auto.Descrizione ,tb_auto_tipo.Descrizione AS D_sca_man ,'0' AS type ,t1.last_km + t1.km AS proxima ,
(SELECT t2.km_f AS km_last FROM tb_auto_percorsi t2 WHERE t2.dal = (SELECT MAX(t3.dal)as MaxData FROM tb_auto_percorsi t3 WHERE t3.id_auto='1') ) as km_last
FROM tb_auto_manutenzioni t1
LEFT JOIN tb_auto ON t1.id_auto = tb_auto.id
LEFT JOIN tb_auto_tipo ON t1.id_tipo = tb_auto_tipo.id
WHERE t1.id_auto ='1'
 

Discussioni simili