Imam jedan naizgled banalan problem, medjutim ne znam kako da se to realizuje na MySQL-u.
Situacija je sledeca:
Tabela: Contracts (relevantne kolone: id, start_date, end_date, account_id)
Tabela: Accounts (relevantne kolone: id)
Tabela: AccountHanlders (relevantne kolone: account_id, user_id, start_date, end_date)
Tabela: Users (relevantne kolone: id)
Tabela Contracts su razni projekti u kojima se referencira Account (Client) i sveki projekat ima start i end date.
Tabela Accounts su kompanije (klijenti)
Tabela AccountHandlers su record-i koji definisu intervale "handlovanja" klijenta od strane odredjenog user-a.
Neophodno je da za svako trajanje projekta postoji barem jedan record AccountHanlders (tj. bar 1 user) da pokriva minimum interval trajanja projekta za Account za koji je on/ona zaduzeni.
Obicno su user-i dodoljeni na godisnjem nivou (ali moze i krace) da vode racuna o nekom client-u (account), pri cemu obicno ima 2 user-a koji brinu o svakom klijentu (account-u).
Cilj je utvrditi da li postoji bar jedan dan Contract-a (projekta) za neki Account, a da nije pokriven bar jednim user-om (account handlerom).
Ono sto smo mi krenuli da radimo jeste da se napravi "neka" temp tabela koja ce ubacivati date sequence, tj. da se "expand"-uje contract start_date - end_date u toliko record-a koliko ima date range; isto to da se uradi sa AccountHandler range-om i da se uradi left outer join sa date condition (contract_date = handler_date):
Account_id, Contract_id, contract_date, user_id, handler_date
Na kraju bi trebali da izolujemo slucajeve: Account_id, Contract_id, contract_date, user_id = null, handler_date = null
tj. sve one Contract-e koji imaju date (jedan dan) koji nije "pokriven" sa handler-om.
E sad, mi smo se zakucali jer ne mozemo u MySQL da zovemo stored procedure iz stored procedure.
Da li ovom problemu pomaze jedino koriscenje kursora ili ima neko elegantnije resenje?
Hvala unapred,
Igor