从x和x匹配的2个表中拉出结果?

时间:2014-05-08 09:54:19

标签: php mysql

我试图从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}}表格,但这并没有拉过任何东西,我没有得到任何错误。

4 个答案:

答案 0 :(得分: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())");

答案 1 :(得分: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 _ *

答案 2 :(得分: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

答案 3 :(得分: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

的乐趣