---
title: "Fråga för urval av duplicerade rader samt icke befintliga rader?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/157695-fråga-för-urval-av-duplicerade-rader-samt-icke-befintliga-rader"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "LR^evil.sid"
published: "2007-03-01T15:36:16.000Z"
updated: "2007-03-02T07:16:08.000Z"
replies: 3
views: 355
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/157695-fråga-för-urval-av-duplicerade-rader-samt-icke-befintliga-rader"
---

# Fråga för urval av duplicerade rader samt icke befintliga rader?

## #1 — LR^evil.sid, 2007-03-01T15:36Z

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

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

## #2 — LR^evil.sid, 2007-03-01T15:54Z

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.

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

## #3 — emission, 2007-03-01T17:03Z

Problem 1:

Du har rätt tanke. Du får lägga till något i stil med

```
AND kundnummer.entitet NOT IN (SELECT entitet FROM utskick WHERE datum >= '2006-11-01')
```

eller så gör du en extra LEFT

```
LEFT JOIN utskick u2 ON kundnummer.entitet=u2.entitet AND u2.datum >= '2006-11-01'
```

och lägger till ett villkor som gör att rader som matchas inte får vara med

```
WHERE u2.entitet IS NULL
```

Problem 2:

Så fort du ger villkor till utskick-tabellen i WHERE satsen så blir det i praktiken en INNER JOIN. Med andra ord måste du skilja på de som ska matchas och de som inte hittades.

```
WHERE (utskick.brevId=1 AND utskick.datum < '2006-11-01'  OR utskick.entitet IS NULL) ....
```

Varsågod och sätt ihop... :)

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

## #4 — LR^evil.sid, 2007-03-02T07:16Z

såklart, tack skall du ha

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/157695-fråga-för-urval-av-duplicerade-rader-samt-icke-befintliga-rader
