私は2つのSQLクエリを持っています。最初のクエリは、AREAとCATEGORYに基づいてデータベースから製品を選択します
家具店で、このクエリはダイニング テーブル用です。
SELECT p.id,
p.product_name,
p.range_name,
p.pic_url,
p.hits,
p.manufacturer,
p.standard_price,
p.sale_price,
p.offer_price,
p.discount,
p.display_manufacturer,
p.display_price,
p.visible,
p.display_model_results,
p.model,
p.subcat,
p.disable_options,
p.request_price,
p.corner_flag,
cf.flag_name,
cf.flag_url,
cf.flag_description,
p.display_model,
p.offer_status,
p.disable_options_results,
p.added_timestamp,
p.about,
p.keywords
FROM products p,
corner_flags cf
WHERE ( p.area = 'Dining Room Furniture'
OR p.additionarea = 'Dining Room Furniture' )
AND ( p.subcat = 'Dining Tables'
OR p.additionsubcat = 'Dining Tables' )
AND p.sale_price = ''
AND p.visible = '1'
AND p.corner_flag = cf.flag_id
AND ( p.sale_price = ''
OR p.offer_price = '0' )
AND p.visible = '1'
ORDER BY ( p.hits ) DESC
商品が表示されるたびに、商品テーブルの「ヒット数」フィールドは 1 ずつ増加します。これは最初は問題ありませんでしたが、今では顧客が結果を人気順に並べると、新商品が常にリストの一番下に表示されます。
サイトで行われたすべてのクリックを追跡する別のテーブルがあるため、たとえば、過去 2 週間で特定の製品が表示された回数をカウントするクエリを作成しました。
SELECT Count(*) AS total,
vtp.product_id
FROM visitor_tracking_pages vtp,
products p
WHERE vtp.product_id = p.id
AND p.subcat = 'Dining Tables'
AND p.visible = '1'
AND vtp.last_click >= '1380153600'
GROUP BY vtp.product_id
ORDER BY total DESC
このクエリは、製品 ID と、過去 2 週間に受信した合計ヒット数を返します。
これら 2 つのクエリを 1 つに結合する方法が必要なだけです。明らかに、すべての製品が過去 2 週間以内に閲覧されたわけではないので、違いがある場合は 0 を返す方法が必要ですか?
さまざまなJOINSを見てきましたが、それらの書き方に慣れていません。
どんな助けでも大歓迎です!