2012-05-01 3 views
0

SQLクエリにORDERとLIMITを含めると問題があります。ORDER、LIMIT、sprintfでクエリ

$STH_1 = $DBH_R->query("SELECT table_name       
         FROM information_schema.tables       
         WHERE table_name       
         LIKE 'v_c_ei\_9%' 
         "); 
$stmts_1 = array(); 

//echo "date = ".  $date."<br>";         // $date is today date 
$date_60 = date('Y-m-d', strtotime('-60 day', strtotime($date)));  // $date_60 = today - 60 days 


while (($row_1 = $STH_1 -> fetch_assoc()) !== null){ 

$table_name = $row_1['table_name']; 
$stmts_1[] = sprintf("SELECT * 
         FROM $table_name 
         WHERE (date_time >= '$date_60') AND (ei_code = '1117')  
        ");  
} 

// at this place I need help, I think. I have few data from every query but I want to reduce the number of solutions to 1 per table 

$stmt_1 = implode("\nUNION\n", $stmts_1); 
$stmt_1 .= "\nORDER BY date_time ASC";  
$STH_5_2 = $DBH_R->query($stmt_1);   
while (($row_5_2 = $STH_5_2 -> fetch_assoc()) !== null){ 

上記のスクリプトは正常です。しかし、私はデータの数を制限したい(私はすべてのテーブルの最後のものだけが必要です)。私は、sprintfクエリで

ORDER BY date_time DESC LIMIT 0,1 

経由でやってみましたが、動作したくありません。注文を追加するとき。私は答えを持っています

Fatal error: Call to a member function fetch_assoc() on a non-object in "while (($row_5_2 ..."

誰でも助けることができますか?

+1

sprintfクエリを使用して試してみると、コードはどのくらい正確に見えますか? mysqlからエラーをチェックしましたか? –

+0

@MarkByersおそらく彼はmysqliを使用しているように見えます。 'echo $ DBH_R-> error;' –

答えて

1

あなたのコードを見てみると、あなたがおそらく次のエラーを取得していると思わ(しかし、確かにこれをチェックしてください):

 
Incorrect usage of UNION and ORDER BY 

もしそうなら、あなたは括弧が欠けているからです。 UNIONのマニュアルを参照してください:

To apply ORDER BY or LIMIT to an individual SELECT, place the clause inside the parentheses that enclose the SELECT:

(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10) 
UNION 
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10); 
+0

UNIONとORDERのこの部分はうまくいきます。私は受け取るデータを選択しなければなりませんUNION、そして私は(sprintfクエリの中でORDERを使って)これをやろうとします。このORDERは動作したくありません:( – Andrew

+0

答えはかなりシンプルです - > ORDER BY neverあなたのソリューションは大丈夫ですが、この問題ではありません - 私たちはどれくらいのテーブルを持っているのかわかりません - 最初のクエリから絶対に必要です... – Andrew

+0

あなたの助けを求めるthk ...あなたが削除したあなたのコメントを覚えておいてください... – Andrew