2011-01-05 107 views
0

Faily新到PHP和MySQL,這可能會顯得很混亂。mysql多表查詢PHP內循環

這是我想出了:

$query = "show tables like 'whatever%'"; 
$result = mysql_query($query); 
$num_results = mysql_num_rows($result); 

for ($i = 0; $i < $num_results; $i++) 
{ 
$row = mysql_fetch_array($result); 
$sql=mysql_query("SELECT * FROM ". $row[0] ." WHERE a=(SELECT MAX(a)) AND b=(SELECT MAX(b)) AND c LIKE 'd%' ORDER BY date DESC LIMIT 1"); 


while($info=mysql_fetch_array($sql)){ 
    echo "..."; 
} 
} 

我從每個表中獲取所需的值,所以X結果取決於表的數量。我想要的是查詢表的結果,但只顯示按日期/時間排序的前10-5。

這是可能的當前腳本?有沒有更簡單的方法(同時,桌子數量不斷變化)?這種查詢方法數據庫加劇嗎?

乾杯!

+0

這裏的目標是什麼?回聲(無需擔心在php var中存儲)來自任何以'whatever'開頭的表中滿足最大條件的X最近行中的某些字段? – 2011-01-05 03:15:10

+0

如果x = 100個表格,我得到每個表格的值/輸出,我只想要100個表格中的10個,最近的10個表格是最近的。 – Alfie 2011-01-05 04:23:36

回答

0

我不斷地改變具有類似結構的表的數目,這是一個設計錯誤。也查詢切換到

$sql=mysql_query("SELECT * FROM $tbl WHERE c LIKE 'd%' ORDER BY a DESC, b DESC, date DESC LIMIT 1"); 

對數據庫有點救濟。

+0

感謝您的答案,不幸的是,這並沒有解決我的問題。我網站上的某些頁面充當小型數據庫,當頁面加載時,會查詢與頁面相對應的表格。我確實有一張表,但擔心每次頁面加載時查詢大量數據都不是好事,即我的問題。除非單個表格不會對有效性產生巨大影響? – Alfie 2011-01-05 04:32:47

+0

http://dev.mysql.com/doc/refman/5.1/en/partitioning.html – 2011-01-05 04:53:29

+0

http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html – 2011-01-05 04:54:02