2013-08-27 205 views
2

如何從兩個不同數據庫將相同查詢中的數據選擇到同一服務器中? 這是我在做什麼,但我查詢不工作:MYSQL - 從不同數據庫中選擇

$sqlquery = "SELECT * FROM database_2.table_2 WHERE database_1.table_1.data_1 LIKE database_2.table_2.data_2"; 

$result = mysql_query($sqlquery); 
$number = mysql_numrows($result); 

$i = 0; 
if ($number < 1) { 
    print "DOH"; 

}else{ 
    while ($number > $i) { 
    $content = mysql_result($result,$i,"database_2.table_2.data_3"); 
    print "$content"; 
    $i++; 
    } 
} 
+0

定義 「不工作」?錯誤?你不能實際檢查你的SELECT查詢是否工作或產生錯誤 – 2013-08-27 23:11:48

+0

警告:mysql_numrows():提供的參數不是在/web/htdocs/...etc行88上有效的MySQL結果資源[$ number = mysql_numrows( $ result);] – Giovanni

+1

這意味着querry失敗 – 2013-08-27 23:18:32

回答

3

的問題是不是不同的數據庫。

您的WHERE子句引用未在FROM子句中提供的字段database_1.table_1.data_1。

沒有你的意思是像

SELECT * 
FROM database_2.table_2 
JOIN database_1.table_1 
    ON (database_2.table_2.some_field = database_1.table_1.some_other_field) 
WHERE database_1.table_1.data_1 LIKE database_2.table_2.data_2 

此外,

echo mysql_error(); 

您的查詢失敗之後 - 這會給你一個不好的事的線索。

+0

歸類(utf8_general_ci,隱含的)和非法混合(utf8_unicode_ci,隱含的)操作 '=' – Giovanni

+0

SELECT * FROM database_2.table_2 JOIN database_1.table_1 ON( database_2.table_2.some_field = database_1.table_1.some_other_field) WHERE database_1.table_1.data_1 LIKE database_2.table_2.data_2 COLLATE utf8_general_ci – mkf

0

試試這個

SELECT * FROM database_2.table_2 t2 INNER JOIN database_1.table_1 t1 
    ON t1.data_1 = t2.data_2