1

これはMYSQLで機能します:

SELECT hi_Historie_id, 
  hi_Klus_id, 
  hi_Datum_gedaan, 
  hi_Prijs, 
  hi_Voldaan, 
  hi_Datum_voldaan, 
  hi_Voldaan_via, 
  max(hi_next_date), 
  hi_Opmerking
FROM Historie 
GROUP BY hi_Klus_id

これにより、正しい結果が得られます。最新の日付を持つすべての行hi_Klus_id

しかし、私が他のテーブルと結合するよりも:

LEFT OUTER JOIN Glazenwassen ON Historie.hi_Klus_id = Glazenwassen.gw_Klus_id 
WHERE Historie.hi_next_date <= CURDATE()

これにより、エラーが発生します#1064

誰かが私に理由を説明できますか?

4

1 に答える 1

0

私の提案は、サブクエリを作成して を返し、その結果をとテーブルMAX(hi_next_date)の両方に結合することです。HistorieGlazenwassen

select h.hi_Historie_id, 
  h.hi_Klus_id, 
  h.hi_Datum_gedaan, 
  h.hi_Prijs, 
  h.hi_Voldaan, 
  h.hi_Datum_voldaan, 
  h.hi_Voldaan_via, 
  h.hi_next_date, 
  h.hi_Opmerking
from Historie h
inner join
(
  select max(hi_next_date) hi_next_date, hi_Klus_id
  from Historie
  group by hi_Klus_id
) h2
  on h.hi_Klus_id = h2.hi_Klus_id
  and h.hi_next_date = h2.hi_next_date
left join Glazenwassen g
  on h.hi_Klus_id = g.gw_Klus_id
where h.hi_next_date <= CURDATE() 

サブクエリをHistorieテーブルに結合する場合、hi_next_dateと の両方で結合する必要がありhi_Klus_idます。

于 2012-12-14T14:27:35.483 に答える