Okay, you asked for it:
overzicht van de tabellen
CREATE TABLE bedrijven (
unique_id bigint(20) unsigned NOT NULL auto_increment,
id bigint(20) unsigned NOT NULL default '0',
aid bigint(20) unsigned NOT NULL default '0',
cid bigint(20) unsigned NOT NULL default '0',
bedrijfsnaam varchar(100) NOT NULL default '',
vestiging varchar(15) default NULL,
verzendcode longtext,
DCode int(250) default NULL,
PRIMARY KEY (unique_id),
KEY ids (id,aid,cid)
) TYPE=MyISAM;
CREATE TABLE bedrijven_adres (
u_adres_id bigint(20) unsigned NOT NULL auto_increment,
bid bigint(20) unsigned NOT NULL default '0',
adres varchar(50) default NULL,
postcode varchar(

default NULL,
plaats varchar(50) default NULL,
tfnrvast varchar(13) default NULL,
tfnrmobiel varchar(13) default NULL,
tfnrfax varchar(13) default NULL,
email varchar(50) default NULL,
homepage varchar(100) default NULL,
PRIMARY KEY (u_adres_id),
KEY adres_bid (bid)
) TYPE=MyISAM;
CREATE TABLE bedrijven_contact (
u_contact_id bigint(20) unsigned NOT NULL auto_increment,
bid bigint(20) unsigned NOT NULL default '0',
sex enum('m','v') default NULL,
contactpersoon varchar(30) default NULL,
voorletters varchar(10) default NULL,
voornaam varchar(20) default NULL,
achternaam varchar(30) default NULL,
titel varchar(5) default NULL,
aanspreektitel enum('Geachte heer','Geachte mevrouw','Weledelzeergeleerde Heer','Weledelzeergeleerde Vrouwe','Weledelgestrenge Heer','Weledelgestrenge Vrouwe') default NULL,
functie_contactpersoon varchar(30) default NULL,
tfnr_contactpersoon varchar(13) default NULL,
c_email varchar(60) default NULL,
andere_contactpersoon varchar(40) default NULL,
andere_sex enum('m','v') default NULL,
andere_functie varchar(30) default NULL,
andere_tfnr varchar(13) default NULL,
PRIMARY KEY (u_contact_id),
KEY contact_bid (bid)
) TYPE=MyISAM;
CREATE TABLE data_main (
id bigint(20) NOT NULL auto_increment,
sex varchar(255) default NULL,
voorletters varchar(12) default NULL,
voornaam varchar(50) default NULL,
achternaam varchar(50) default NULL,
adres varchar(100) default NULL,
postcode varchar(7) default NULL,
woonplaats varchar(60) default NULL,
tfnr_vast varchar(20) default NULL,
tfnr_mobiel varchar(20) default NULL,
tfnr_fax varchar(20) default NULL,
email varchar(100) default NULL,
dob datetime default NULL,
geboortedatum varchar(

default NULL,
geboorteplaats varchar(80) default NULL,
nationaliteit varchar(5) default NULL,
burgelijke_staat enum('Alleenstaand','Gescheiden','Gehuwd','Ongehuwd','Samenwonend','Weduwnaar/Weduwe') default NULL,
regio enum('''t Gooi','Flevoland','Randstad-Noord','Randstad-Zuid','Utrecht','Zuid-Holland','Oost-Nederland','Brabant','Kop van N-Holland','Limburg','Noord-Nederland','Amsterdam','Zeeland','Drente') default NULL,
status varchar(30) default NULL,
soort_werk varchar(50) default NULL,
ligauto varchar(15) default NULL,
vestiging varchar(10) default NULL,
afdeling varchar(50) default NULL,
aantal_uren float default NULL,
uren_pw_min tinyint(4) default NULL,
uren_pw_max tinyint(3) unsigned default NULL,
vijfenzestig enum('on') default NULL,
werkervaring text,
opleiding text,
specifiek text,
zoek_flex enum('on') default NULL,
zoek_vast enum('on') default NULL,
zoek_project enum('on') default NULL,
salaris_indicatie varchar(50) default NULL,
huidig_inkomen varchar(40) default NULL,
rijbewijs_soort varchar(5) default NULL,
rijbewijs_nr varchar(25) default NULL,
reizen_max int(11) unsigned default NULL,
reizen_keuze char(3) default NULL,
hobbies mediumtext,
intake_bijzonderheden text,
behandeld_door varchar(40) default NULL,
datum_intake varchar(15) default NULL,
online enum('(online-inschrijving)') default NULL,
aandachtspunten mediumtext,
PRIMARY KEY (id)
) TYPE=MyISAM;
CREATE TABLE declaratie (
id bigint(20) unsigned NOT NULL auto_increment,
inschrijfnummer bigint(20) NOT NULL default '0',
declaratienummer int(11) NOT NULL default '9999',
datum datetime default NULL,
weeknummer tinyint(2) NOT NULL default '0',
jaar varchar(4) NOT NULL default '0000',
debiteuren_nummer int(250) default NULL,
bijzonderheden tinytext,
bedrijfs_id bigint(20) default NULL,
vestiging varchar(15) default NULL,
ingevoerd_door varchar(100) default NULL,
printed enum('','true') NOT NULL default '',
PRIMARY KEY (id),
KEY bedrijfs_id (bedrijfs_id),
KEY isn (inschrijfnummer)
) TYPE=MyISAM;
CREATE TABLE declaratie_uren (
declaratie_id bigint(20) unsigned NOT NULL default '0',
uren float default NULL,
verlof float default NULL,
ziek float default NULL,
dag enum('maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag','zondag') default NULL,
t1_toeslag float default NULL,
t1_uren float default NULL,
t2_toeslag float default NULL,
t2_uren float default NULL,
t3_toeslag float default NULL,
t3_uren float default NULL,
t4_toeslag float default NULL,
t4_uren float default NULL,
uren_per_dag float default NULL,
reiskosten float default NULL,
overige_kosten float default NULL,
KEY did (declaratie_id)
) TYPE=MyISAM;
CREATE TABLE personalia (
id int(10) unsigned NOT NULL auto_increment,
inschrijfnummer bigint(20) default NULL,
ArbVerg varchar(50) default NULL,
kopie varchar(10) default NULL,
paspoortnr varchar(50) default NULL,
kopie_paspoort enum('','on') default NULL,
paspoort_geldig_tot varchar(

default NULL,
sofinr varchar(50) default NULL,
loonbelastinggroep varchar(50) default NULL,
bankgironr varchar(50) default NULL,
zkv_naam varchar(50) default NULL,
zkv_soort varchar(50) default NULL,
zkv_registratienr varchar(50) default NULL,
zkv_adres varchar(50) default NULL,
zkv_postcode varchar(50) default NULL,
zkv_plaats varchar(50) default NULL,
PRIMARY KEY (id),
KEY isn (inschrijfnummer)
) TYPE=MyISAM;
CREATE TABLE werkgegevens (
inschrijfnummer bigint(20) default NULL,
werkgever_no tinyint(3) unsigned default NULL,
Bedrijf varchar(255) default NULL,
bedrijfsid bigint(20) unsigned default NULL,
Bankrekening varchar(255) default NULL,
Sofinummer varchar(255) default NULL,
Ziekenfonds varchar(255) default NULL,
Arbeidsvergunningsnummer varchar(255) default NULL,
clienten_nummer varchar(255) default NULL,
functie varchar(255) default NULL,
aanvangsdatum varchar(255) default NULL,
einddatum varchar(10) default NULL,
eind varchar(

default NULL,
week tinyint(3) unsigned default NULL,
werktijden varchar(255) default NULL,
indicatie_uren_pw tinyint(3) unsigned default NULL,
bruto_uurloon varchar(20) default NULL,
vorig_uurloon varchar(20) default NULL,
reiskosten varchar(255) default NULL,
overige_kosten varchar(255) default NULL,
toeslagen varchar(255) default NULL,
duur_overeenkomst varchar(255) default NULL,
vijfzesplus varchar(20) default NULL,
intercedent varchar(255) default NULL,
verdeelsleutel varchar(20) default NULL,
van varchar(20) default NULL,
tot varchar(20) default NULL,
winstmarge float default '1',
aansluitnr varchar(50) default NULL,
bijzonderheden varchar(50) default NULL,
KEY wisn (inschrijfnummer),
KEY wbid (bedrijfsid)
) TYPE=MyISAM;
Er kunnen hier en daar nog wat rare dingen in staan. Het zijn oorspronkelijk access tabellen van iemand anders geweest die ik om heb gezet. Soms heb ik nog wat oude kolommen laten staan om te kijken wat daar in stond.
de querycode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| SELECT
d.id AS did, d.*,
dm.sex, CONCAT(dm.voornaam,' ', dm.achternaam) AS naam, dm.adres, dm.postcode, dm.woonplaats, dm.tfnr_vast, dm.dob, dm.geboortedatum, dm.nationaliteit,
personalia.*,
b.bedrijfsnaam,
ba.adres, ba.postcode, ba.plaats, ba.tfnrvast, bc.voorletters, bc.voornaam, bc.achternaam,
w.bruto_uurloon, w.vorig_uurloon, w.reiskosten, w.overige_kosten,
SUM(du.uren) AS uren, SUM(verlof) AS verlof, SUM(ziek) AS ziek
FROM declaratie AS d
LEFT JOIN data_main AS dm ON dm.id = d.inschrijfnummer
LEFT JOIN personalia ON personalia.inschrijfnummer = d.inschrijfnummer
LEFT JOIN declaratie_uren AS du ON du.declaratie_id = d.id
LEFT JOIN bedrijven AS b ON b.unique_id = d.bedrijfs_id
LEFT JOIN werkgegevens AS w ON w.inschrijfnummer = d.inschrijfnummer AND w.bedrijfsid = d.bedrijfs_id
LEFT JOIN bedrijven_adres AS ba ON b.aid = ba.u_adres_id
LEFT JOIN bedrijven_contact AS bc ON b.cid = bc.u_contact_id
WHERE d.printed != 'true'
GROUP BY d.id
LIMIT 0,1 |
en de explaincode:
1
2
3
4
5
6
7
8
9
| table type possible_keys key key_len ref rows Extra
d ALL NULL NULL NULL NULL 4395 where used; Using temporary
dm eq_ref PRIMARY PRIMARY 8 d.inschrijfnummer 1
personalia ref isn isn 9 d.inschrijfnummer 1
du ref did did 8 d.id 1
b eq_ref PRIMARY PRIMARY 8 d.bedrijfs_id 1
w ref wisn,wbid wisn 9 d.inschrijfnummer 1
ba eq_ref PRIMARY PRIMARY 8 b.aid 1
bc eq_ref PRIMARY PRIMARY 8 b.cid 1 |