繁体   English   中英

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

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

我有两张桌子

表格1

预订收据优惠券

100 701 501,502

100 702 503,504

100 703 505,506

表2

book1 receipt1 coupon1

100 701 501,502

100 702 503,504

我正在根据bookno从table1搜索数据。

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

然后检查table2的所有收据和优惠券......

并且只返回table2中不存在的那些值。

在上面的例子中

table2中没有下面的行,但是在table1中

100 703 505,506

所以查询只返回这一行.....

PLZ帮我做这个......

<?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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM