php-pdo代码比较两个表中的数据并返回结果


php pdo code to compare data from two table and return in result

我有两个表

表1

书籍收据优惠券

100 701 501502

100 702 503504

100 703 505506

表2

书籍1收据1耦合1

100 701 501502

100 702 503504

我正在根据bookno从表1中搜索数据。

现在我需要检查我是否输入bookno=100并点击搜索

然后它检查表2的所有收据和优惠券…

并且仅返回表2中不存在的那些值。

在上述示例中

下一行不在表2中,但在表1中存在

100 703 505506

所以查询只返回此行

请帮我做这个。。。

<?php   
$receipt = "";
$db=new PDO('mysql:host=localhost;dbname=circulation_scheme_prepaid','root','');
if($_POST && isset($_POST['search']))
{       
    $result=$db->prepare('SELECT DISTINCT receipt_no FROM scheme_master WHERE book_no2=:book_no2');
    $result->bindParam(':book_no2',$_POST['book_no']);
    $result->execute(); 
    $data1 = $result->fetchAll();
    $coupons = array(); 
        foreach($data1 as $row)
        {    
            $receipt[] = $row['receipt_no']; 
        }   
}
?>

我认为查询可能看起来像这个

    SELECT DISTINCT master.receipt_no 
    FROM scheme_master AS master 
        JOIN book_issue_return  AS bir  ON master.bookno2 = bir.book_no 
 WHERE master.book_no2=:book_no2  AND (
    bir.receiptno  NOT IN 
        (SELECT master.receipt_no FROM scheme_master AS master ) AND 
    bir.couponno NOT IN (SELECT master.receiptno FROM scheme_master AS master ))

然后:

$data1 = $result->fetchAll();
if (count($data1)) {
    // return all the data
} else {
    // return message
}

我根据需求及其对我的工作更改查询。

SELECT DISTINCT SM.receipt_no FROM scheme_master AS SM
JOIN book_issue_return AS bir ON SM.book_no2 = bir.book_no
WHERE SM.book_no2 = :book_no2 AND (SM.receipt_no NOT IN (SELECT bir.receiptno FROM book_issue_return AS bir))