0

私は以前、解決する必要のある SQL クエリを使用して、stackoverflow でユーザー JW から多大な支援を受けました。ただし、要件は彼の最初の回答から多少変更されています。

過去 30 日以内の結果を検索するクエリの代わりに、Web サイト バックエンドの管理者ユーザーに、レポートがカバーする必要がある日数を選択するオプションを提供する必要があるため、30 日は任意の数値にできます。今。

ユーザーが必要な日数を入力できるphpスクリプトとテキストエントリがあり、遡る日付x日数を計算します。この日付は変数に格納されます。他のレポートでも同じ方法を使用していますが、非常にうまく機能しています。

JWが作成した元のクエリは次のとおりです。

SELECT  c.customers_id
FROM    customers c 
INNER JOIN customers_info ci
ON c.customers_id = ci.customers_info_id 
LEFT JOIN codes_redeem_history pc 
ON c.customers_id = pc.customer_id
WHERE   pc.customer_id IS NULL
GROUP   BY c.customers_email_address 
HAVING  MAX(ci.customers_info_date_of_last_logon) <= subdate(now(),INTERVAL 30 DAY)

次の行に沿って何かを使用する必要があります。

WHERE ci.customers_info_date_of_last_logon >= '" . $ndate . "'

SQL構文エラーが発生するため、HAVING MAXセクションの代わりにそれを配置することはできません

私は試しました:

WHERE   pc.customer_id IS NULL
AND WHERE ci.customers_info_date_of_last_logon >= '" . $ndate . "'
GROUP   BY c.customers_email_address 

しかし、うまくいきませんでした。参考までに、10 日レポートを選択すると、$ndate は「20130301」になります。

ありがとう、スティーブ

4

1 に答える 1

0

わお、

私は愚かな頭を抱えていたに違いありません...答えは今私にはとても明白です。

WHERE   pc.customer_id IS NULL
AND ci.customers_info_date_of_last_logon >= '" . $ndate . "'
GROUP   BY c.customers_email_address 

使用できませんそしてどこでできますか!!

于 2013-03-11T02:17:28.870 に答える