Voor een callcentre programma moet ik een selectie van bedrijven maken die binnen een bepaalde regio vallen en aan een aantal voorwaarden voldoen.
Aangezien het een redelijk complexe query is, heb ik het opgedeeld in een aantal kleinere hulpquerys die elkaar gebruiken. Nu is het de bedoeling om, als dat mogelijk is, deze kleine hulpquerys te integreren tot een grote (snellere) query.
Ik zal eerst de situatie proberen te schetsen zodat het voor jullie duidelijk is waar het om gaat
De selectie van bedrijven moet aan de volgende voorwaarden voldoen:
Even om misverstanden te voorkomen: ik vraag dus niet of jullie mijn code willen fixen, maar puur om tips of een andere denkwijze voor dit pobleem. Alle suggesties zijn welkom.
Aangezien het een redelijk complexe query is, heb ik het opgedeeld in een aantal kleinere hulpquerys die elkaar gebruiken. Nu is het de bedoeling om, als dat mogelijk is, deze kleine hulpquerys te integreren tot een grote (snellere) query.
Ik zal eerst de situatie proberen te schetsen zodat het voor jullie duidelijk is waar het om gaat
De selectie van bedrijven moet aan de volgende voorwaarden voldoen:
- De bedrijven vallen binnen de regio van de betreffende verkoper
- Bedrijven die nog nooit gebeld zijn
- Bedrijven die gebeld zijn, en die om verschilllende redenen na een x tijd moeten worden teruggebeld. Bijv. bij 'geen interesse' wordt er na een half jaar teruggebeld
- Bedrijven die een terugbelafspraak gemaakt hebben, die of volgende week teruggebeld willen worden, of de volgende dag op een specifiek tijdstip.
- bedrijf hierin staan natuurlijk alle bedrijfsgegevens etc
- gesprekken een soort log tabel, hierin staan alle uitkomsten van de gesprekken + de status die het gesprek heeft opgeleverd bijv. niet thuis, in gesprek etc. etc.
- terugbellen bedrijven die teruggebeld moeten worden.
Even om misverstanden te voorkomen: ik vraag dus niet of jullie mijn code willen fixen, maar puur om tips of een andere denkwijze voor dit pobleem. Alle suggesties zijn welkom.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| // Alle bedrijven die in de regio van de verkoper vallen.
** qryVerkoper **
Select b.*
from Bedrijf as b
Where b.verkoperID = 1;
--------------------------------------------------------------------------------
//De bedrijven die nog nooit zijn gebeld, en dus niet in de tabel gesprekken voorkomen
** qryEnOf **
select v.*
from qryVerkoper as v
where not exists (
select *
from gesprekken g
where g.bedrijfsid = v.bedrijfsid
)
--------------------------------------------------------------------------------
// De bedrijven die al een keer gebeld zijn, afhankelijk van de
// gespreksstatus van het laatst gevoerde gesprek komen ze wel of niet in de
// lijst
** qryEnEn **
select max (g.beldatum) as beldatum, g.bedrijfsid
from gesprekken as g, qryVerkoper as v
where v.bedrijfsid = g.bedrijfsid
group by g.bedrijfsid
** qryLaatsteGesprek **
select distinct g.*
from gesprekken as g, qryEnEn as e
where e.bedrijfsid = g.bedrijfsid and g.beldatum = e.beldatum
** qryStatusFilter **
select *
from qryLaatstGesprek
where (gespreksstatus = 'geen interesse' and terugbeldatum <= now()) or
(gespreksstatus = 'afspraak' and isklant = false and terugbeldatum <= now()) or
(gespreksstatus = 'afspraak' and isklant = true and terugbeldatum <= now()) or
(gespreksstatus = 'in gesprek') or
(gespreksstatus = 'antwoord apperaat') or
(gespreksstatus = 'niet aanwezig');
--------------------------------------------------------------------------------
// De bedrijven waarvan is aangegeven dat ze teruggebeld moeten worden
** qryTerugbellen **
select t.bedrijfsid, max(t.beldatum) as beldatum
from terugbellen as t, bedrijf as b
where t.bedrijfsid = b.bedrijfsid and t.gespreksstatus = 'terugbellen'
group by t.bedrijfsid;
--------------------------------------------------------------------------------
//Voeg de resulaten van de voorgaande querys samen tot 1 tabel
** qryRegioIDs **
Select Bedrijfsid from qryStatusFilter
union select Bedrijfsid from qryTerugbellen
union select bedrijfsid from qryEnOf;
** qryRegio **
select b.*
from bedrijf as b, qryRegio as r
where r.bedrijfsid = b.bedrijfsid |