2014-05-08 51 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

你能解释一下你的改变或他做错了什么? –