---
title: "DISTINCT från JOIN:ad tabell"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/160627-distinct-från-join-ad-tabell"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "LR^evil.sid"
published: "2007-05-23T12:18:50.000Z"
updated: "2007-05-23T13:34:35.000Z"
replies: 1
views: 373
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/160627-distinct-från-join-ad-tabell"
---

# DISTINCT från JOIN:ad tabell

## #1 — LR^evil.sid, 2007-05-23T12:18Z

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
```

Permalänk: https://www.webforum.nu/p/160627

## #2 — LarsG, 2007-05-23T13:34Z

Ta bort distinct, lägg till följande villkor

```
and addresser.datum = 
   (select max(datum)
      from adresser
     where adresser.kundid = knr.kundid)
```

Permalänk: https://www.webforum.nu/p/1980287

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/160627-distinct-från-join-ad-tabell
