我有两个表
表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))