2012-03-16 3 views
0

フォーラムを検索して解決策を探しましたが、その例はわかりません。私の構文が間違っているのは分かっていますが、私はそれを理解しようとしています。mysqlテーブル/ビュー内の特定の複数の行でブール論理を実行する

2012-03-09 24:00:00にクエリが実行されたと仮定します。私がいる

select * from task_status; 
+----------------+---------------------+---------------------+---------+------+ 
| task   | began    | ended    | running | ran | 
+----------------+---------------------+---------------------+---------+------+ 
| MIRRORS_SPLIT | 2012-03-09 19:15:48 | 2012-03-09 19:15:51 |  0 | 1 | 
| NETWORK_BACKUP | 2012-03-09 19:25:01 | 2012-03-09 19:23:41 |  0 | 1 | 
| TAPE_BACKUP | 2012-03-09 19:26:01 | 2012-03-09 23:16:32 |  0 | 1 | 
+----------------+---------------------+---------------------+---------+------+ 

-

task_statusは=(終了>始めた)、=()< 10Hを終了(NOW())走ったランニング、図、(私が正しくダミーの値を編集したと思います) BACKUPS行を作成する問題、began=(MIN(NETWORK_BACKUP.began, TAPE_BACKUP.began)、およびend=(MAX(NETWORK_BACKUP.end, TAPE_BACKUP.end)ランニングとランは正しく評価されるはずですよね?

私のような結果の行を追加したい:

| BACKUPS  | 2012-03-09 19:25:01 | 2012-03-09 23:16:32 |  0 | 1 | 

任意の助けをいただければ幸いです。

答えて

0

ような何かを見ていない右のトラックに私を得たこと、JustDanyul、ありがとうございました。

ここで私は使い終わった。

SELECT 0 = 
    (
    SELECT 
    (
    (SELECT ran FROM expect.task_status WHERE task='NETWORK_BACKUP') 
    + 
    (SELECT ran FROM expect.task_status WHERE task='TAPE_BACKUP') 
) 
) 
2

MIN()とMAX()を使う方法が間違っているように見えますが、これは集合関数であることに注意してください。これらは、パラメータとして渡す列の内容で定義された値のセットで動作します。

2つのパラメータを渡すことで、2つの異なる行にまたがる開始値と終了値のMIN値またはMAX値を伝えたいようです。 (私があなたの疑似構文を正しく理解していない限り)。

あなたは

SELECT 'BACKUPS', MIN(began), MAX(ended) 
FROM task_status WHERE task = 'NETWORK_BACKUP' OR task = 'TAPE_BACKUP' 
GROUP BY task 
関連する問題