MySQL 5.1
Vi sparar kunders adresser i en separat tabell. Skulle kunden ändra adress uppdateras inte raden utan vi lägger in en ny rad med det datum då adressen träder i kraft vilket betyder att en kund kan finnas fler än en gång i denna tabell.
Adresstabellen har förjande kolumner: id, kundid, datum, distrikt, adress, postnr, ort
Denna fråga ger "Dubletter" eftersom jag inte väljer ut DISTINCT ur adresstabellen.
SELECT DISTINCT
[23 kolumner]
FROM abformer af
INNER JOIN kundnummer knr ON af.abid = knr.abid
AND (knr.bindningstid IS NULL
OR (YEAR(knr.bindningstid) = YEAR(CURDATE()) AND MONTH(knr.bindningstid) <= MONTH(CURDATE())))
INNER JOIN kunder k ON k.kundid = knr.kundid
AND LCASE(k.namn) NOT REGEXP '^[ah]b$|^[ah]b[[:space:]]|^[ah]b[[:punct:]]|[[:space:]]+[ah]b([[[:punct:]][[:space:]]])?$'
AND LCASE(k.efternamn) NOT REGEXP '^[ah]b$|^[ah]b[[:space:]]|^[ah]b[[:punct:]]|[[:space:]]+[ah]b([[[:punct:]][[:space:]]])?$'
INNER JOIN adresser ad ON ad.kundid = knr.kundid
AND NOT CONCAT(ad.adress,ad.postnr,ad.ort) IS NULL
AND ad.distrikt = 1
LEFT JOIN utskick u ON knr.entitet = u.entitet
AND (YEAR(DATE_ADD(CURDATE(), INTERVAL -3 MONTH)) <= YEAR(u.datum)
AND MONTH(DATE_ADD(CURDATE(), INTERVAL -3 MONTH)) <= MONTH(u.datum))
WHERE NOT (af.grupp = 5 OR af.grupp = 11 OR af.grupp >= 18)
ORDER BY ad.datum DESC;
Denna bit join:ar adresstabellen. Kan nån svara på hur jag kan slippa de extra raderna med kunder som har mer än en adress i adresstabellen?
INNER JOIN adresser ad ON ad.kundid = knr.kundid
AND NOT CONCAT(ad.adress,ad.postnr,ad.ort) IS NULL
AND ad.distrikt = 1