firebird - How to combine sql queries where one query uses the MIN function -
i have read-only firebird database want extract data. in ms-access it's easy data want using 3 simple queries in output of each query input next one. want program in php , keep on 1 line want combine these 3 queries in 1 can't figure out.
the first query gives me dates starting today in company planning (max 1000 lines). jobs planned on more day's want first date today. using min function in query 2. in last query use left join combine pending jobs generated first dates.
how can in 1 query? have reading rights can't work temporary tables.
can give me directions please?
**first step** select salesorderplan.plandate, salesorderplan.salesorder salesorderplan salesorderplan.plandate >= date(); **second step** select min([1estap].plandate) firstplandate, [1estap].salesorder [1estap] group [1estap].salesorder; **third step** select salesorder.orderno, [2estap].firstplandate, salesorder.description, salesorder.deliverylocname, salesorder.deliveryaddress, salesorder.deliverycity ((salesorder) left join 2estap on (salesorder.objectid = [2estap].salesorder)) salesorder.salesstatus=1 order salesorder.orderno; i have 2 tables, first called salesorder contains jobs. second called salesorderplan contains dates in planning jobnumbers.
salesorder objectid description etc 342567 blah blah 356782 jwz 384512 not in planning yet salesorderplan objectid salesorder plandate 23451 342567 12-03-2017 23489 342567 14-04-2017 23490 356782 13-03-2017 23496 356782 18-06-2017 23499 342567 21-08-2017 23499 342567 28-08-2017 23512 356782 30-08-2017 23524 356782 2-09-2017 i want list of orders. if there date in planning want first date after today (that used min fuct for) outcome should be
result objectid description plandate 342567 blah blah 21-08-2017 356782 jwz 30-08-2017 384512 not in planning yet no date
i should preface saying don't have experience firebird, have experience sql. might work you:
-- **third step** select salesorder.orderno, [2estap].firstplandate, salesorder.description, salesorder.deliverylocname, salesorder.deliveryaddress, salesorder.deliverycity, salesorder left join ( -- **second step** select min([1estap].plandate) firstplandate, [1estap].salesorder ( -- **first step** select salesorderplan.plandate, salesorderplan.salesorder salesorderplan salesorderplan.plandate >= date() ) [1estap] group [1estap].salesorder ) [2estap] on (salesorder.objectid = [2estap].salesorder)) salesorder.salesstatus=1 order salesorder.orderno; edit
as pointed out @markrotteveel, first 2 queries can collapsed one. here's query performed:
-- **third step** select salesorder.orderno, [2estap].firstplandate, salesorder.description, salesorder.deliverylocname, salesorder.deliveryaddress, salesorder.deliverycity, salesorder left join ( -- **first & second steps** select min(plandate) firstplandate, salesorder salesorderplan plandate >= date() group salesorder ) [2estap] on (salesorder.objectid = [2estap].salesorder)) salesorder.salesstatus=1 order salesorder.orderno;
Comments
Post a Comment