2016-03-20 6 views
0

ドメインごとに月ごとに日付をフィルタリングしようとしています。 ここにデータのサンプルがあります。mysqlの間での使用方法

ドメイン - ID:1、2

ドメイン - ラベル:ユーザ1、ユーザ2

Fact_data - domain_idに:1、2

Fact_data - 日付: '2016年1月1日' から変化します'2016-03-20'

これは私が試したSQLですが、何とかエラーがあります。

SELECT d.label, COUNT(*) AS count, date_format(f.date, 'YYYY-MM') AS date 
FROM domain d, fact_data f 
WHERE f.domain_id = d.id 
AND f.date >= `2016-01-01` AND f.date <=`2016-01-31` 
GROUP BY `domain_id`; 

私は結果が似ていることを望みます。

| domain | count | date | 
---------------------------------- 
| User1 |  3  | 2016-01 | 
| User2 |  1  | 2016-01 | 
| User1 |  2  | 2016-02 | 
| User1 |  1  | 2016-03 | 
| User2 |  2  | 2015-03 | 
+1

どのようなエラーが表示されますか? – Mureinik

+2

'AND f.date> = ...'句にバックティックの代わりに正規のティック '' 'を使用します。バッククォートは、列/テーブル/データベース名用です。 – PerlDuck

+0

MySQLはバッククォートを使用してデータベース、テーブル、およびフィールド名を引用します。あなたの実際のクエリがあなたがここに投稿したように見えないことを願っています。アポストロフィ( '' ')または二重引用符(' "')を使用して、文字列を囲みます。 – axiac

答えて

0

私はこれが動作します推測している:「、他の人がすでに指摘したように、あなたは、単一の使用すべき

SELECT d.label, 
     COUNT(*) AS count, 
     date_format(f.date, 'YYYY-MM') AS `date` 
    FROM domain d JOIN fact_data f ON f.domain_id = d.id 
WHERE f.date >= '2016-01-01' AND f.date <='2016-01-31' 
GROUP BY d.label; 
0

、またはダブル、」、文字列を引用列名はバッククォートを必要とし、。 DATEやGROUPなどのキーワードと競合する場合は

あなたはGROUP BY年、月、ドメインのように聞こえますが、正しいですか?もしそうなら、クエリはおそらく何かに見えるはずですこのように:

SELECT d.label, COUNT(*) AS count, date_format(f.date, 'YYYY-MM') AS `date` 
FROM domain d, fact_data f 
WHERE f.domain_id = d.id 
AND f.date >= '2016-01-01' AND f.date <='2016-01-31' 
GROUP BY year(`date`), month(`date`), `domain_id`; 

質問のタイトルは、BETWEENを使用することを示します。その場合、クエリは次のようになります。

SELECT d.label, COUNT(*) AS count, date_format(f.date, 'YYYY-MM') AS `date` 
FROM domain d, fact_data f 
WHERE f.domain_id = d.id 
AND f.date BETWEEN '2016-01-01' AND '2016-01-31' 
GROUP BY year(`date`), month(`date`), `domain_id`; 
0

すべておかげで、sqlは正常に実行されました。しかし、私は日付

| domain | count | date | 
---------------------------------- 
| User1 |  3  | YYYY-MM | 
| User2 |  1  | YYYY-MM | 

を得ることができませんでしたそれは「YYYY-MM」は、実際の数字(例; 2016から01' )を好きではない返す

と私は毎月、それを得ることができませんでしたが、ちょうど上記のようなドメインごとに1回のみ

誰も追加または編集することを知っていますか?

関連する問題