2015-02-11 44 views
0

我正試圖放在一起的MySQL查詢,它將搜索2表,table1和table2,並選擇任何表中小於30天的所有結果。mysql從2個表中查詢select *值並返回結果存在的表的名稱?

我的表:

table1 

id | user_id | name  |  age | date | 


table2 

id | user_id | name  |  age | date |  account  |  sortcode | 

我呼應出來的結果像這樣:

<?php require_once 'config.php'; ?> 

<?php 
$table1 = 'supplier_bank_details'; 
$table2 = 'supplier_invoices'; 

$query = "SELECT *, $table1 as TABLE from $table1 where 
date > NOW() - INTERVAL 30 DAY and user_id = '{$_SESSION['id']}' ORDER BY date DESC 
UNION 
SELECT *, $table2 as TABLE from $table2 where 
date > NOW() - INTERVAL 30 DAY and user_id = '{$_SESSION['id']}' ORDER BY date DESC"; 
$result = mysql_query($query) or die(mysql_error()); 
while($row = mysql_num_fields($result)){ 


if($result === $table1) { 

echo 'this result is from table1'; 
echo $row['name']; 
echo $row['age']; 

}else{ 

if($result === $table2) { 

echo 'this result is from table2'; 
echo $row['name']; 
echo $row['age']; 


} } } 
?> 

所以基本上我試圖到位,檢查的結果是來自哪個表的條件並且echo'out'結果來自表格1/2'以及該表格中的值。

有誰知道我可以做到這一點,因爲我是MySQL查詢的新手。在此先感謝,

回答

0

您應該使用union達到此目的。另外,您可以用結果集本身對錶($ table1或$ table2)進行硬編碼。

Select id, user_id, name, age, date, TABLE 
from 
(
    SELECT id, user_id, name, age, date, $table1 as TABLE from $table1 where 
    date > NOW() - INTERVAL 30 DAY and user_id = '{$_SESSION['id']}' 
    UNION 
    SELECT id, user_id, name, age, date, $table2 as TABLE from $table2 where 
    date > NOW() - INTERVAL 30 DAY and user_id = '{$_SESSION['id']}' 
) 
ORDER BY date DESC 
+0

謝謝你,我的php if語句會怎樣?因爲如果(MySQL_table_name ='table1'){目前產生了一個suntax錯誤,我應該使用什麼呢?謝謝 – 2015-02-11 09:58:22

+0

檢查並刪除從php.ini *文件的disable_functions中刪除mysql_table_name字符串 – 2015-02-11 10:31:49

相關問題