發表於 程式分享

java hibernate 套件join table與sql command結果竟不相同

於java hibernate執行以下指令於t4 join結果非如預期,
理論上SELECT結果t1.date1會與t4.date1,
但結果卻不同,用command執行卻又相同~

SELECT t1.*, t2.*, t3.*, t4.*
  FROM table1 t1 
  LEFT JOIN table2 t2 
    ON t1.col1 = t2.col1 
  LEFT JOIN table3 t3 
    ON t2.col2 = t3.col2 
  LEFT JOIN table4 t4 
    ON t1.date1 = t4.date1 

Deubg許久後,想到之前有遇過SELECT t1.col1, t2.col1,
其2個值應不同,但t2.col1卻變成t1.col1之值,
因此將上述指令改成如下就OK了~

SELECT t1.*, t2.*, t3.*, t4.date1_t4
  FROM table1 t1 
  LEFT JOIN table2 t2 
    ON t1.col1 = t2.col1 
  LEFT JOIN table3 t3 
    ON t2.col2 = t3.col2 
  LEFT JOIN (SELECT date1 as date1_t4 FROM table4) t4 
    ON t1.date1 = t4.date1_t4