2013-04-04 63 views
0

這是一個簡單的事情,但我不;噸得到它我只能從MySQL查詢獲得的最後一個記錄

我有一個DB 日期兩個表和日期newsmail 我有一些列的ID,姓名,地址,電子郵件等 在newsmail我有2場ID,郵件

我需要提取日期,所有記錄,包含從newsmail

電子郵件地址我已經試過:

SELECT * FROM date WHERE date.email IN (SELECT mail FROM newsmail); 

我收到一個記錄起始日期從newsmail 也

SELECT * FROM date d JOIN newsmail n ON d.email LIKE n.mail 

相同的結果,最後一行如上... 電子郵件和郵件字段VARCHAR(50)

http://sqlfiddle.com/#!2/fad06/1/0 在這裏它的工作,但不在我的真實數據庫

問題是從txt文件插入數據到newsmail

INITIAL:

$tmpfisier = $_FILES["upfile"]["tmp_name"]; 
$file_handle = fopen($tmpfisier, "r"); 
    while(!feof($file_handle)){ 
     $email_line = fgets($file_handle); 
     $values = mysql_query("INSERT INTO newsmail (`ID` ,`mail`) VALUES (NULL , '$email_line')"); 
    } 
    fclose($file_handle); 

編輯:

$tmpfisier = $_FILES["upfile"]["tmp_name"]; 
$file_handle = fopen($tmpfisier, "r"); 
    while(!feof($file_handle)){ 
     $raw_email_line = fgets($file_handle); 
     $email_line = preg_replace('/\s\v/u', '', $raw_email_line); 
     $values = mysql_query("INSERT INTO newsmail (`ID` ,`mail`) VALUES (NULL , '$email_line')"); 
    } 
    fclose($file_handle); 

所以這個問題是從空格TXT/CSV文件

謝謝大家!

+0

嘗試是這樣的: 「SELECT * FROM日期WHERE date.email IN(SELECT MAIL FROM newsmail)」 – puelo 2013-04-04 12:20:27

回答

0
SELECT a.* 
FROM Date a 
     INNER JOIN NewsMail b 
      ON a.email LIKE CONCAT('%', b.mail, '%') 
+0

不應該'_'和''%被在'b.mail'逃脫? – 2013-04-04 12:22:04

+0

@MarcelKorpel是的,但我不知道如何值的樣子。 – 2013-04-04 12:22:52

+0

試過,我只得到最後一行... – 2013-04-04 12:28:33

0

使用此:

SELECT d.* 
FROM date d 
INNER JOIN newsmail n 
    ON n.mail = d.email; 
+0

結果:第一列(n.mail)與newsmail電子郵件,用NULL列的其餘部分,並在中間的某個地方,我有一排從newsmail – 2013-04-04 12:25:08

+0

與上次記錄coresponding你能提供sqlfiddle樣本的字段。 COM? @GabrielPetrut – hjpotter92 2013-04-04 12:26:55

+0

這很奇怪。 http://sqlfiddle.com/#!2/fad06/1/0在sqlfiddle它的工作 – 2013-04-04 12:53:08

0

可能需要的TRIM功能,除去開頭和結尾的空格。

SELECT * FROM date d LEFT JOIN newsmail n ON TRIM(d.email) = TRIM(n.mail) 

對於SQLSERVER,您可能需要使用LTRIM和RTRIM合力得到相同的結果。

SELECT * FROM date d LEFT JOIN newsmail n ON RTRIM(LTRIM(d.email)) = RTRIM(LTRIM(n.mail)) 
相關問題