Php sql查询以联接三个表并选择数据(如果存在)
下面是我的三个数据表 我需要从schememaster中选择book_no 2、receipt_no、createddate,并连接book issue和book return表 现在需要检查,如果图书已发行,则显示该图书的发行日期 如果书籍被退回,则需要根据这些书籍和收据编号显示returneddate 表名schemeMaster 表名bookissue 表名bookreturn 预期产量 我尝试下面的查询,获取数据,但不符合我的要求 我的查询显示所有行的出库日期和退货日期…在这些收据中,也显示在图书退货表中不可用的日期 对于EX-在我上面的EX-中,有3个表包含数据 我需要从方案主表中选择所有数据,并显示issuedate和returndate(如果可用),否则此列显示空白Php sql查询以联接三个表并选择数据(如果存在),php,mysql,Php,Mysql,下面是我的三个数据表 我需要从schememaster中选择book_no 2、receipt_no、createddate,并连接book issue和book return表 现在需要检查,如果图书已发行,则显示该图书的发行日期 如果书籍被退回,则需要根据这些书籍和收据编号显示returneddate 表名schemeMaster 表名bookissue 表名bookreturn 预期产量 我尝试下面的查询,获取数据,但不符合我的要求 我的查询显示所有行的出库日期和退货日期…在这些收据中,也
SELECT DISTINCT SM.book_no2 As Book,
SM.created AS Printeddate,
BI.issue_date AS issuedate,
BR.return_date AS returndate,
BR.used_receipt AS totalreceipt
FROM scheme_master SM
LEFT JOIN book_issue BI
ON (SM.book_no2 = BI.book_no )
LEFT JOIN book_return BR
ON ( BR.book = BI.book_no )
WHERE SM.city = 'nagpur'
AND SM.book_no2 BETWEEN 70 AND 70
这将产生与您的输出类似的结果,但不确定这是否是您想要的结果 通过您的查询,您得到了哪种输出?我在所有收据中都得到了重复的返回日期…我需要,如果书籍返回表中有收据,则显示返回日期,否则在返回日期列中此收据显示为空…但您的查询也将在所有收据中显示相同的问题和重复日期,即使这些收据在书籍中不存在退货表…我需要如果这些收据存在于图书退货表中,则显示此收据的退货日期,否则在退货日期列中显示空白对不起,我不在后面。如果有没有值的行,左连接将返回NULL。如果BOOKNO的所有值都等于70,则需要按某个值分组。
bookno issuedate
70 04-03-2015
70 05-03-2015
70 06-03-2015
bookno usedreceipt returndate
70 100 04-03-2015
70 101 04-03-2015
70 102 05-03-2015
70 103 07-03-2015
bookno receiptno createdddate IssueDate ReturnDate
70 100 2015-02-20 04-03-2015 04-03-2015
70 101 2015-02-20 ---------- 04-03-2015
70 102 2015-02-20 05-03-2015 05-03-2015
70 103 2015-02-20 06-03-2015 07-03-2015
70 104 2015-02-20 --------- ---------
70 105 2015-02-20 --------- ---------
70 106 2015-02-20 --------- ---------
SELECT DISTINCT SM.book_no2 As Book,
SM.created AS Printeddate,
BI.issue_date AS issuedate,
BR.return_date AS returndate,
BR.used_receipt AS totalreceipt
FROM scheme_master SM
LEFT JOIN book_issue BI
ON (SM.book_no2 = BI.book_no )
LEFT JOIN book_return BR
ON ( BR.book = BI.book_no )
WHERE SM.city = 'nagpur'
AND SM.book_no2 BETWEEN 70 AND 70
select s.book_no2, s.reciept_no, s.createddate, b.issuedate, br.returndate
from schememaster as s
left join bookissue as b on b.bookno = s.book_no2
left join bookreturn as br on br.bookno = s.book_no2