2012-08-13 37 views
1

這樣,通過此PHP mysql LEFT JOIN outputMySQL查詢給出空值的第二DB

現在我已經做了修改,第二個數據庫(Cu.data)和數據庫表正在繼續的故事是這樣的:

mysql> desc ins.data; 
+-------------------+------------------+------+-----+---------------------+----------------+ 
| Field    | Type    | Null | Key | Default    | Extra   | 
+-------------------+------------------+------+-----+---------------------+----------------+ 
| ID    | int(10) unsigned | NO | PRI | NULL    | auto_increment | 
| Date    | timestamp  | NO |  | 0000-00-00 00:00:00 |    | 
| Number   | text    | NO |  | NULL    |    | 
| Text    | text    | NO |  | NULL    |    | 
| Email    | text    | NO |  | NULL    |    | 
| TargetID   | varchar(20)  | NO |  | NULL    |    | 
| CSW    | text    | NO |  | NULL    |    | 
| TSW    | text    | NO |  | NULL    |    | 
| Key    | text    | NO |  | NULL    |    | 
| CType    | text    | NO |  | NULL    |    | 
+-------------------+------------------+------+-----+---------------------+----------------+ 
10 rows in set (0.00 sec) 

mysql> desc Cu.data; 
+----------+---------------+------+-----+---------+-------+ 
| Field | Type   | Null | Key | Default | Extra | 
+----------+---------------+------+-----+---------+-------+ 
| Title | decimal(15,0) | NO |  | NULL |  | 
| Cu  | varchar(45) | NO |  | NULL |  | 
| Co  | varchar(25) | NO |  | NULL |  | 
| Ci  | varchar(25) | NO |  | NULL |  | 
| SID  | int(12)  | NO |  | NULL |  | 
| TargetID | varchar(20) | NO | MUL | NULL |  | 
| SType | varchar(12) | NO |  | NULL |  | 
+----------+---------------+------+-----+---------+-------+ 
7 rows in set (0.00 sec) 

我查詢qoes這樣的:

mysql> SELECT ins.data.Date, ins.data.Number, 
ins.data.Email, ins.data.TargetD, ins.data.CSW, 
ins.data.TSW, ins.data.CType, Cu.data.Cu, 
Cu.data.SID, Cu.data.Co, 
Cu.data.Ci, Cu.data.SType 
FROM ins.data 
LEFT JOIN 
Cu.data ON (ins.data.TargetID = Cu.data.TargetID); 

和輸出顯示從ins.data(第一個數據庫)所有需要的值,而是從Cu.data所有值都「NULL」

TargetID是數據庫之間的'鏈接'。即。使用TargetID我可以在數據庫之間映射數據。

當人們向其中插入數據時,ins.data上的數據緩慢增加。 Cu.data是靜態的,它可能會每年更新一次。

因爲我從來沒有PHP的工作,我決定利用我的bash編程技巧。通過cron腳本發送電子郵件與從數據庫提取的數據。腳本完美地工作,但一些數據丟失。

而現在的問題;爲什麼我的SQL語句只從ins.data輸出數據!

+0

其中之一,兩列的存儲大小是不一樣的:)無論如何,該列內有什麼? – 2012-08-13 10:04:20

+0

太棒了!我也將Cu.data上的TargetID列修改爲varchar(20)。之後,截斷並重新加載數據到數據庫。它開始工作了!非常感謝! – user1586771 2012-08-13 10:51:53

+0

酷,我已經添加了一個答案,其餘的看到這個問題。 – 2012-08-13 11:06:09

回答

1

調查連接條件問題時,首先要看的是列是否相互兼容(即相同類型和存儲大小)。

對於文本列,可能還存在空格和不可打印的字符的問題,這些問題可能不容易找到。

+0

是的。我在幾列上有空格,點,逗號等,但現在直接使用sql-query。稍後我可能會返回到我的PHP問題(在本主題的開頭提到),但現在解決此問題:) – user1586771 2012-08-13 11:08:30