好適明示的なJOINの表記とGROUP BYを使用すると、HAVING句、あなたが使用することができるはずです。
SELECT i.itemid, i.name, i.price
FROM Item i
JOIN ItemComment c ON i.itemid = c.itemid
GROUP BY i.itemid, i.name, i.price
HAVING MAX(c.dateCommentPosted) < (ADD_MONTHS(SYSDATE, -6));
ます。また、WITH句、または直接に使用していずれかで、サブクエリを書くことができ
FROMリストを使用して、各アイテムについてコメントが投稿された最新の日付を計算し、それをItemテーブルと結合します。
コメントのない項目を選択する必要があるかどうかを検討したい場合があります。
Max(c.dateCommentPosted)
も表示/選択したい場合はどうすればいいですか?それはオプションですか?それをselect節に追加し、GROUP BY句にdateCommentPosted
を追加すると、それは正しいでしょうか?
BY句SELECT句ではなく、グループに追加:
SELECT i.itemid, i.name, i.price, MAX(c.dateCommentPosted) AS dateCommentPosted
FROM Item i
JOIN ItemComment c ON i.itemid = c.itemid
GROUP BY i.itemid, i.name, i.price
HAVING MAX(c.dateCommentPosted) < (ADD_MONTHS(SYSDATE, -6));
あなたはASを除外することを好むかもしれません。 AFAIK、オラクルはテーブルのエイリアスでASを絶対に拒否します(私はそこに残しました)が、select-listの 'カラムエイリアス'でそれを受け入れますが、必要はありません。
なお、SQL標準、したがって「すべての」SQL DBMSでは、HAVING句で集約比較が必要であり、HAVING句にはGROUP BY句が必要です。したがって、GBH —グループ化することによって/同様に有害な体の害を持つ。
Max(c.dateCommentPosted)も表示/選択したい場合はどうすればいいですか?それはオプションですか?それをselect節に追加し、GROUP BY節にdateCommentPostedを追加すると、それは正しいでしょうか? – TPR