mysql - Car Park Database Design -
we have 2 number plate reader cameras on entrance , exit of car park generate csv file when detection takes place, gets automatically loaded database, barrier on entrance operated automatically camera's "whitelist", in turn generated , controlled within database , exported text file.
initially, thought simple 3-table database per design below, realising not case:
my initial designs:
tbl_in : id (autonum/pk), plate, date_in, time_in tbl_out: id (autonum/pk), plate, date_out, time_out tblwhitelist: plate(pk), country code, description
currently,the relationship can think of be:
whitelist plate-plate_in & plate_out 1 plate in whitelist seen many times within in & out tables
this has been made more complicated (and brain melting!) queries have been specified (brackets show columns , basic logic thinking of results):
- "whitelisted vehicles on site today" (if plate on whitelist: plate, description, time_in,time_out [if plate seen on out table today,otherwise null])
- "non-whitelisted vehicles seen today" (if plate not on whitelist: plate, time_in,time_out [if plate seen on out table, otherwise null])
- "whitelisted vehicles time on site today/last 7 days/last 30 days/last 90 days (if plate on whitelist: plate, description, date_in, time_in, date_out, time_out) have duplicate entries of same plates multiple times on site
- "non-whitelisted vehicles time on site today/last 7 days/last 30 days/last 90 days (if plate not on whitelist: plate, date_in, time_in, date_out, time_out) have duplicate entries of same plates multiple times on site
what need ideas on how sort out query code these working properly. 1 of last main hurdles me in project. unfortunately, it's hurdle size of everest. can provide appreciated!
i agree straweberry's post, don't need 2 tables in
, out
. have 1 like:
tblvehicleevent : id (autonum/pk), plate, eventdate, eventtime, eventtype
where eventtype has either values of in or out.
or have merge timein , timeout , datein , dateout like:
tblvehicleevent : id (autonum/pk), plate, datein, dateout, timein, timeout
i think second 1 easier query later on based on requirements.
the queries below:
whitelisted vehicles on site today" (if plate on whitelist: plate, description, time_in,time_out [if plate seen on out table today,otherwise null])
select w.plate, description, timein, timeout tblvehcileevent v
inner join tblwhitelist w
on v.plate = w.plate
datein = curdate()"non-whitelisted vehicles seen today" (if plate not on whitelist: plate, time_in,time_out [if plate seen on out table, otherwise null])
select plate, timein, timeout
tblvehicleevent
plate not in (select plate tblwhitelist)"whitelisted vehicles time on site today/last 7 days/last 30 days/last 90 days (if plate on whitelist: plate, description, date_in, time_in, date_out, time_out) have duplicate entries of same plates multiple times on site
select w.plate, description, timein, timeout
tblvehcileevent v
inner join tblwhitelist w
on v.plate = w.plate
datein between startdate , enddate"non-whitelisted vehicles time on site today/last 7 days/last 30 days/last 90 days (if plate not on whitelist: plate, date_in, time_in, date_out, time_out) have duplicate entries of same plates multiple times on site
select plate, timein, timeout
tblvehicleevent
plate not in (select plate tblwhitelist)
, datein between startdate , enddate
Comments
Post a Comment