2014-05-08 50 views
1

我想從兩個表中提取數據,像這樣從x和x匹配的2個表中提取結果?

$query2 = mysql_query("SELECT * FROM supplier_stats, supplier_registration WHERE supplier_stats.company_reg_number = supplier_registration.company_reg_number AND supplier_stats.insurance_date = DATE(NOW())"); 
     while($row = mysql_fetch_array($query2)) { 
     echo "<div class=\"contact_details\">Supplier Contact Details:<br/>";  
     echo "<p>".$row['contact_name']."</p></div>"; 

     echo "<div class=\"contact_details\">Supplier Contact Details:<br/>";  
     echo "<p>".$row['contact_email']."</p></div>"; 

     } ?> 

我所要做的就是讓insurance_date從一個表supplier_stats從表supplier_registration以及將這些聯繫人詳細信息由company_number這是在這兩個表,但這並沒有通過任何東西,我沒有得到任何錯誤。

+1

它看起來OK我,只是隱加入被認爲風格差這幾天。你能用樣本數據做一個sqlfiddle嗎? – Barmar

回答

0

試試這個

$query2 = mysql_query("SELECT supplier_stats.* FROM supplier_stats, supplier_registration WHERE supplier_stats.company_reg_number = supplier_registration.company_reg_number AND supplier_stats.insurance_date = CURDATE()"); 
    while($row = mysql_fetch_array($query2)) { 
    echo "<div class=\"contact_details\">Supplier Contact Details:<br/>";  
    echo "<p>".$row['contact_name']."</p></div>"; 

    echo "<div class=\"contact_details\">Supplier Contact Details:<br/>";  
    echo "<p>".$row['contact_email']."</p></div>"; 

    } ?> 

因爲company_reg_number是兩個表曖昧,它會拋出錯誤 使用CURDATE()而不是DATE(NOW())

此外,還要避免使用過時mysql_ *

0

給您查詢一試像這樣:

SELECT ss.insurance_date, sr.contact_details 
FROM supplier_stats ss 
JOIN supplier_registration sr ON sr.company_reg_number = ss.company_reg_number 
WHERE ss.insurance_date = CURDATE() 

請注意,我用你提到的兩個項目替換了*。不確定contact details是一個領域還是多個領域,但您可以根據需要進行更改。這裏的要點是JOIN

而且,這應該不用說,不使用mysql_* - 而不是你應該使用mysqlipdo

0
SELECT * FROM supplier_stats AS ss 
LEFT JOIN supplier_registration AS sr ON ss.company_reg_number = sr.company_reg_number 
WHERE ss.insurance_date = CURDATE(); 

可能會排序該SQL出來。

順便提一句,我喜歡在這些情況下的一點點Heredoc動作 - 使SQL字符串更容易閱讀。

正如其他地方說,你發現的PDO

1

歡樂試試這個,

$query2 = mysql_query(" SELECT supplier_registration.contact_name, 
           supplier_registration.contact_email 
         FROM supplier_registration 
         INNER JOIN supplier_stats 
         ON supplier_registration.company_reg_number = supplier_stats.company_reg_number 
         WHERE supplier_stats.insurance_date = DATE(NOW())"); 
+0

你能解釋一下你的改變或他做錯了什麼? –