0

我有 2 张桌子:

  1. 顾客
  2. 客户沟通

customer 表有一个唯一sequence列,customer_communication 表具有与 customer 表customer_seq中的序列列匹配的列。

customer_communication 表中的行有一个日期时间列,我正在使用这些查询从两个表中选择数据:

echo '<table width="100%" border="0" cellspacing="10" cellpadding="10">';
    //select from the customer_communication table
    $sql="SELECT * from customer where company_status = '' and no_communication = '' order by company ASC ";
    $rs=mysql_query($sql,$conn);
    while($result=mysql_fetch_array($rs))
    {
        $sql2="SELECT * from customer_communication WHERE customer_seq = '".$result["sequence"]."' and datetime > DATE_ADD(DATE(now()), INTERVAL 15 DAY) order by datetime ASC ";
        $rs2=mysql_query($sql2,$conn);
        if(mysql_num_rows($rs2) > 0)
        {
            echo '<tr>
            <td><a href="customer_communication.php?seq='.$result["sequence"].'">'.$result["company"].'</a></td>
            </tr>';
        }
    }
    echo '</table>';

因此它从客户表中选择所有行,然后从 customer_communication 表中选择 customer_seq = 序列且距日期时间列 15 天的行。

如何显示客户表中不存在于 customer_communication 表中的所有行

例如,客户中有序列 1,而在 customer_communication 表的 customer_seq 列中不存在,所以我想显示这个

4

3 回答 3

1

这可以通过基本的 SQL 来完成。我会把它留给你把它集成到你的 php.ini 中。

SELECT * FROM Customer c
WHERE NOT EXISTS
    (SELECT * FROM Customer_Communication
    WHERE Customer_seq = c.Customer_Seq);
于 2013-11-13T10:23:31.183 回答
0

有多种不同的方法可以做到这一点,但一种方法是使用子查询从 customer_communication 表中获取唯一的 customer_seq 值,然后从 customer 表中检索没有序列列的这些值的所有行。

Select * from customer c
where c.sequence not in 
(select distinct customer_seq from customer_communication)
于 2014-11-03T16:02:17.917 回答
0

你可以试试这个,

$sql="SELECT * FROM customer as a, customer_communication as b  WHERE a.company_status = '' AND a.no_communication = '' AND b.customer_seq NOT IN ( SELECT sequence FROM customer ) AND b.datetime > DATE_ADD(DATE(now()), INTERVAL 15 DAY) ORDER BY a.company ASC ";
于 2013-11-13T10:24:17.657 回答