En ide jag har om en lösning på problem 1, men inte vet hur jag skall implementera, är att göra ett urval av de poster som inte kvalificerar sig p.g.a. det senaste utskicket och ha med dem i WHERE-klasulen att dessa id:n inte får finnas med.
DBMS: MySQL 5.01
Nuvarande SQL-fråga:
SELECT DISTINCT kundnummer.entitet, SUBSTRING_INDEX(namn,' ',1) AS namn, efternamn, adress, CONCAT(LEFT(postnr,3), ' ', SUBSTRING(postnr, -2)) AS postnr, CONCAT(UCASE(LEFT(ort, 1)), LCASE(SUBSTRING(ort, -(CHAR_LENGTH(ort)-1)))) AS ort, form, '2007-04-30'
FROM abformer
INNER JOIN kundnummer ON abformer.abid=kundnummer.abid
INNER JOIN kunder ON kunder.kundid=kundnummer.kundid
LEFT JOIN utskick ON kundnummer.entitet=utskick.entitet
WHERE utskick.brevId=1 AND utskick.datum < '2006-11-01' AND (kundnummer.bindningstid < DATE_ADD(CURDATE(), INTERVAL 3 MONTH) OR kundnummer.bindningstid IS NULL) AND NOT CONCAT(adress, postnr, ort) IS NULL ORDER BY utskick.datum DESC, abformer.grupp ASC
Önskat resultat: Ett recordset med samtliga rader ur tabellen `utskick` vars senaste utskicksdatum är tidigare än 3 månader sedan och de rader i tabellen `kundnummer` som helt saknar utskick.
Nuvarande rutin:
1 Töm utskriftstabellen.
2 Välj ut de poster som skall få ett utskick.
3 Lägg dessa i särskilld utskriftstabell.
4 Lägg även in dessa i tabellen `utskick` (eftersom vi gjort ett nytt utskick till dem).
5 Flytta tidigare urval till `backuptabell`.
Problem 1: De rader jag väljer ut läggs, som sagt, in i tabellen `utskick` (alltså finns det duplicerade identifierare i denna tabell) men eftersom det måste vara minst 3 månader sedan senaste utskick till respektive kund så fungerar inte min WHERE-klasul "utskick.datum < '2006-11-01'". Alla utskick som gjorts på respektive kund på tidigare datum kvalificerar kunden för ett nytt utskick.
Problem 2: Jag har inte löst hur jag samtidigt som jag måste jämnföra "kundnummer.entitet=utskick.entitet" även måste jämnföra "WHERE utskick.entitet IS NULL"
Tabell: Kundnummer
kundId|entitet|abid|bindningstid
Tabell: Utskick
entitet|brevid|datum
Tabell: Abformer
abid|form|grupp
Tabell: Kunder
kundId|namn|efternamn|adress|postnr|ort
