1

完全に解決された別の質問を投稿しましたが、与えられたのと同じコードを別のMySQLコードに適用する必要があります。

私が持っているのは

SELECT value, COUNT(*) AS 'num' 
FROM table_c 
WHERE table_c_id IN (9, 17, 25)
GROUP BY value

私が今やりたいのは、現在の日付に入力された場合にのみ結果を表示することです。

現在の日付を確認するために持っている現在のコードスニペットは、うまく機能します(日付はunixtime形式です)

( xxxxxxxxxxxxxx and curdate() = date( from_unixtime( b.crm_date_time_column ) ) )

私がクエリで抱えている問題は、日付列がまったく異なるテーブルtable_aにあることです。

日付のtable_aをチェックし、既存の日付SQLを適用するMySQLを作成するにはどうすればよいですか?

これはMySQLデータベースです。

どんな助けでもありがたいことに受け取られます!これは私の頭をはるかに超えています!

4

2 に答える 2

2

関連する列を使用して、最初に他のテーブルを最初に配置する必要があります(他のテーブルではに関連してJOINいると想定しています)。idtable_c_id

そして、前の質問への回答で述べたように、クエリが仮パラメータのままになるように(つまり、インデックスを利用できるように)、裸の日時列で比較を行う方がよいでしょう。

SELECT     a.value
FROM       table_c a
INNER JOIN table_a b ON a.table_c_id = b.id
WHERE      a.table_c_id IN (9,17,25) AND
           b.crm_date_time_column >= UNIX_TIMESTAMP(CURDATE())
GROUP BY   a.value 

crm_date_time_columnこれは、将来の時刻(たとえば、明日、来月など)が含まれないことを前提としていますが、可能であれば、次を追加するだけです。

AND b.crm_date_time_column < UNIX_TIMESTAMP(CURDATE() + INTERVAL 1 DAY)

WHERE条項の別の条件として。

于 2012-07-15T21:38:59.357 に答える
1
SELECT   c.value
FROM     table_c c, table_a a
WHERE    c.id IN (9, 17, 25)
 AND     b.crm_date_time_column >= UNIX_TIMESTAMP(CURDATE())
 AND     c.id = a.id
GROUP BY c.value

このようなクエリでそれを行うことができます。両方のテーブルから行を選択し、それらが同じIDを持ち、現在の日付がtable_a、crm_date_time_columnであるかどうかを確認します。システム内でどの行が相互にリンクしているかをどのように知ることができるかわからないため、同じIDを持っているかどうかをチェックします。

于 2012-07-15T21:31:36.830 に答える