2012-01-31 64 views
0

我的問題是: 我有一個dBASE查詢(A)與events_A今天日期MySQL的聯合搜索結果

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

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

$table_name = $row_1['table_name']; 
$stmts_1[] = sprintf(" 
         SELECT * 
         FROM $table_name 
         WHERE date_time = $today_date     
       ");      
} 

$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) { } 

,我可以從這個在表-A顯示結果。

但我有一個dBASE查詢(B)與events_B今天日期

$table_name_2 = 'v_c_e'; 
$STH_e = $DBH_R->query(" 
         SELECT *      
          FROM `$table_name_2`       
         WHERE date_time = $today_date     
         "); 

while (($row_e = $STH_e -> fetch_assoc()) !== null) { } 

,我可以從這個在表-B顯示結果。

第一個查詢和第二個查詢的源表只有一個公共列 - date_time。

我必須做什麼(以及如何)在一個表中顯示events_A和events_B(ORDER BY date_time ASC)? - 以及未來 - 如何添加events_C(f.ex.類似於events_B)?

//我知道畢竟我需要格式化數據,使它們看起來相似,並且可以顯示在一張表中。

回答

0

我不是從你的問題清楚是否要加入結果 - 或無關 - 也就是說,無論從表中的信息在兩個記錄共享date_time應該是相同的事件有關。

如果是後者,則無法將其有意義地組合;你實際上有兩種不同的模式。

如果在表A和B的信息是指相同的事件,而date_time是一個獨特的密鑰,那麼你就可以做到以下幾點:

SELECT * FROM events_A, events_B WHERE events_A.date_time=events_B.date_time; 

...等。

我認爲,從使用PHP構建的查詢來看,您對SQL的功能以及何時想要使用它們的能力不是很強。在繼續操作之前,可能需要閱讀諸如this guide之類的內容以更好地處理數據庫中應該完成的操作,而不是PHP代碼。

+0

1. event_A的表是虛擬的,而不是真正的dbase表。 2. event_A(蔬菜)和event_B(礦物質)的信息不同 - 只有這一列(date_time)具有類似的信息。 3. date_time僅用於排序作爲時間的函數(列出ASC) – Andrew 2012-02-01 00:42:19

+0

也許類似於:$ STH_5_2 = $ DBH_R-> query(「SELECT * FROM'$ table_name_2' WHERE date_time = $ today_date UNION $ stmt_1 ORDER BY date_time ASC「); //但結果爲空... – Andrew 2012-02-01 01:42:15

+0

公頃,一般來說,時間(date_time)對於events_A和events_B可以不同,但​​.. date(date_time)必須相同:)) – Andrew 2012-02-01 01:51:20