4

私は MySQL の初心者で、行き詰まってしまいました。私の問題を解決するには、ある種の「高度な」サブクエリを作成する必要があると思いますが、その方法がわかりません。誰かが私を助けることができますか?

最初のクエリは、「annons」、「kontering_annons」、「member」の 3 つのテーブルを結合します。その結果、一意の「annons.id」エントリが作成されます。(私の場合、3つの結果)。問題は、一意の「annons.id」ごとにテーブル「kontering_annons」の最後のエントリを見つける必要があることですこのクエリはそうではありません。

SELECT  annons.id, annons.id_user, member.saldo, member.id,
kontering_annons.id_annons, kontering_annons.dat_bet_till, 
kontering_annons.id_kontering_a, kontering_annons.dat_ut_member
FROM annons
LEFT JOIN kontering_annons 
ON kontering_annons.id_annons = annons.id
LEFT JOIN member
ON member.id = annons.id_user
WHERE (annons.status='3' OR annons.status='4')
AND annons.typ='d'
AND annons.startar < NOW() - 48*60*60
AND kontering_annons.dat_bet_till < CURRENT_DATE()
AND member.saldo >= $day_price
GROUP BY annons.id

2 番目のクエリは、「id_annons」ごとにテーブル「kontering_annons」の最後のエントリを表示します (私の場合、18 件の結果)。このクエリを上記のクエリと組み合わせて、最新のエントリ ID. しかし、どのように?

SELECT a.*
FROM kontering_annons a
INNER JOIN (SELECT id_annons, dat_bet_till, max(id_kontering_a) 
AS maxid 
FROM kontering_annons 
GROUP BY id_annons) 
AS b 
ON a.id_kontering_a = b.maxid
4

2 に答える 2