2012-02-20 1 views
-1

を使用して私はこれを行うための最善の方法は、曜日で新しいテーブルを作成していたので、私は今diasSemana空のMySQLのクエリの行が、私は、テーブル名lcMovimientosを持っていると私は必要なの私は、結果としてcantidadMovimientosの量の合計を取得するが、私はそれぞれの行は、日によってになりたいクエリでWHERE

SELECT * FROM diasSemana 
+-----------+ 
| diaSemana | 
+-----------+ 
|   0 | 
|   1 | 
|   2 | 
|   3 | 
|   4 | 
|   5 | 
|   6 | 
+-----------+ 

と呼ばれるテーブルを持っていた調査しただけなので、現在の曜日を週合計しますlcMovimientosと呼ばれるテーブル

mysql> DESCRIBE lcMovimientos; 
+-----------------------+---------------+------+-----+---------+----------------+ 
| Field     | Type   | Null | Key | Default | Extra   | 
+-----------------------+---------------+------+-----+---------+----------------+ 
| idMovimiento   | int(11)  | NO | PRI | NULL | auto_increment | 
| idUsuario    | int(11)  | YES |  | NULL |    | 
| tipoMovimiento  | tinyint(4) | YES |  | NULL |    | 
| cantidadMovimiento | decimal(20,2) | YES |  | NULL |    | 
| idCategoria   | int(11)  | YES |  | NULL |    | 
| fechaMovimiento  | date   | YES |  | NULL |    | 
| idCuenta    | int(11)  | YES |  | NULL |    | 
| descripcionMovimiento | varchar(255) | YES |  | NULL |    | 
| etiquetasMovimiento | varchar(255) | YES |  | NULL |    | 
+-----------------------+---------------+------+-----+---------+----------------+ 

私はどこで取得できますか? cantidadMovimientoの合計が、私は句はので、私は、現在の週から結果を取得する場所、私はもはやので、ここで、週foは日によって行を取得追加していない私のクエリです:

mysql> SELECT SUM(cantidadMovimiento) , diaSemana, fechaMovimiento                         -> FROM diasSemana 
    -> LEFT JOIN lcMovimientos ON diaSemana = WEEKDAY(fechaMovimiento) 
    -> GROUP BY diaSemana; 
+---------------------------+-----------+-----------------+ 
| SUM(cantidadMovimiento) | diaSemana | fechaMovimiento | 
+---------------------------+-----------+-----------------+ 
|     280.00 |   0 | 2012-02-20  | 
|     800.00 |   1 | 2012-02-21  | 
|     7000.00 |   2 | 2012-02-29  | 
|      NULL |   3 | NULL   | 
|      NULL |   4 | NULL   | 
|     -3300.78 |   5 | 2012-02-18  | 
|     600.00 |   6 | 2012-02-26  | 
+---------------------------+-----------+-----------------+ 

とI WHERE句を使用します。

mysql> SELECT SUM(cantidadMovimiento) , diaSemana, fechaMovimiento 
    -> FROM diasSemana 
    -> LEFT JOIN lcMovimientos ON diaSemana = WEEKDAY(fechaMovimiento) 
    -> WHERE WEEK(fechaMovimiento, 1) = WEEK(CURRENT_DATE, 1) 
    -> GROUP BY diaSemana; 
+---------------------------+-----------+-----------------+ 
| SUM(cantidadMovimiento) | diaSemana | fechaMovimiento | 
+---------------------------+-----------+-----------------+ 
|     265.00 |   0 | 2012-02-20  | 
|     800.00 |   1 | 2012-02-21  | 
|     600.00 |   6 | 2012-02-26  | 
+---------------------------+-----------+-----------------+ 

だから私の質問は、私は私が唯一の現在の週の日付を取得するにはどこを使って曜日によって結果を取得するクエリを作ることができる方法です?あまりにも先にありがとう!

+0

を試してみてください。 – Vitamin

+2

**あなたは間違って集約されているので、これは** MySQLはグループごとにランダム 'fechaMovimiento'値を返します。ですので、あなたがそれに基づいてフィルタリングするときには、ランダムな結果を得ています。 – JNK

答えて

0

これはPHPの質問ではありません。この

SELECT 
    COALESCE(SUM(cantidadMovimiento),0) AS cantidadMovimiento, 
    diaSemana, 
    DATE_ADD(DATE(NOW()), INTERVAL diaSemana-WEEKDAY(NOW()) DAY) AS weekday 
FROM diasSemana 
LEFT JOIN lcMovimientos 
    ON diaSemana = WEEKDAY(fechaMovimiento) 
    AND WEEK(fechaMovimiento) = WEEK(NOW()) AND YEAR(fechaMovimiento) = YEAR(NOW()) 
GROUP BY diaSemana; 
+0

迅速な対応のおかげで、これはcantidadMovimiento内のすべての値を合計しますしようとすると、現在の週 –

+0

にないものも含め、あなたはWHERE WEEK(fechaMovimiento)= WEEK(NOW())AND YEARでそれを試してみました(fechaMovimiento )= YEAR(NOW())ステートメント?ここで – silly

+0

は、クエリが私に与えたものである + -------------------- + ----------- + ------- ----- + | |カンティダードモビミエント|ダイアサマナ|平日| + -------------------- + ----------- + ------------ + | 265.00 | 0 | 2012-02-20 | | 800.00 | 1 | 2012-02-21 | + -------------------- + ----------- + ------------ +それだけ+ ---私に与えていない私は運動lcMovimientosから変更し、左にdiasSemanaを行うために日曜日 –

関連する問題