---
title: "Skriv inte ut dubletter"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/134201-skriv-inte-ut-dubletter"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "G8"
published: "2005-09-13T14:02:40.000Z"
updated: "2005-09-16T11:15:14.000Z"
replies: 4
views: 314
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/134201-skriv-inte-ut-dubletter"
---

# Skriv inte ut dubletter

## #1 — G8, 2005-09-13T14:02Z

Gör en sökning på två tabeller, en innehåller de initiella inlägget, den andra svaren på de initiella inläggen.

SELECT satsen kollar tabell2.ticketid = tabell1.id och ska sedan skriva ut resultatet.

Nu är det ju så att jag vill ju inte ha msaaor av utskrifter med samma ID.

Just nu skriver den ut så här:

ID: 12
test1

ID: 12
test2

ID: 12
test3

ID: 11
test1

Det jag vill att den ska göra är att den ska bara skriva ut den med samma ID som har senaste datumet i tabell2.datetime, alltså:

ID: 12
test3

ID: 11
test1

Har provat med DISTINCT och GROUP BY men får inte till det riktigt, eller inte alls för att vara mer exakt... :( 

```
mSQL="SELECT tickets.id, tickets.notes, tickets.status, tickets.keyword, ticketnotes.note, ticketnotes.datetime, ticketnotes.id AS TnID FROM tickets INNER JOIN ticketnotes On ticketnotes.ticketid = tickets.id WHERE keyword > '""' AND " 
mWhere= "("
IF Keyword <> "" AND iscnotes = "" AND notes = "" then
mWhere= mwhere & "(keyword LIKE '%%')"
elseIF Keyword <> "" AND iscnotes <> "" AND notes = "" then
mWhere= mwhere&"(keyword LIKE '%%') OR (note LIKE '%%')"
elseIF Keyword <> "" AND iscnotes <> "" AND notes <> "" then
mWhere= mwhere&"(keyword LIKE '%%') OR (note LIKE '%%') OR (notes LIKE '%%')"
elseIF Keyword <> "" AND notes <> "" then
mWhere= mwhere&"(keyword LIKE '%%') OR (notes LIKE '%%')"
elseIF iscnotes <> "" AND notes <> "" then
mWhere= mwhere&"(note LIKE '%%') OR (notes LIKE '%%')"
elseIF iscnotes <> "" then
mWhere= mwhere&"(note LIKE '%%')"
elseIF notes <> "" then
mWhere= mwhere&"(notes LIKE '%%')"
else
mWhere= mwhere & "(keyword LIKE '%%')"
end if
mWhere= mwhere&") AND status = 5"

'sökfältets värde
mQuery=fixa(request("search"))
sokstrang=request("search")

'loopa igenom allt och ersätt mellanslag inom citattecken med chr(1). 
'Denna bit går att göra med reguljära uttryck också
for i=1 to len(mQuery)
mAsc=asc(mid(mQuery,i,1))
if mAsc=34 then
mCount=mCount+1
blnInQ=not blnInQ
else
if blnInQ and mAsc=32 then
mQuery=left(mQuery,i-1) & chr(1) & mid(mQuery,i+1)
end if
end if

next

'om antalet citattecken är ojämnt ignoreras de helt
if mCount mod 2 <> 0 then
mQuery=replace(mQuery,chr(1)," ")
end if

'ta bort citattecknen
mQuery=replace(mQuery,chr(34),"")

'ersätt mellanslag med chr(0) och mellanslag
mQuery=chr(0) & replace(mQuery," "," " & chr(0))

'splitta upp i en array
mQueryArr=split(mQuery," ")

'skapa arrayer för AND, AND NOT och OR. 100
'chr(0) gör det nu möjligt att matcha endast början på strängarna
mAndArr=filter(mQueryArr,chr(0) & "+",true)
mQueryArr=filter(mQueryArr,chr(0) & "+",false)
mNotArr=filter(mQueryArr,chr(0) & "-",true)
mQueryArr=filter(mQueryArr,chr(0) & "-",false)

'återskapa strängarna (ersätt chr(1) med mellanslag) och
'skapa WHERE-satser i arrayerna
for i=0 to ubound(mAndArr)
mAndArr(i)=replace(mAndArr(i),chr(1)," ")
mAndArr(i)=replace(mWhere,"%%","%" & mid(mAndArr(i),3) & "%")
next
for i=0 to ubound(mNotArr)
mNotArr(i)=replace(mNotArr(i),chr(1)," ")
mNotArr(i)=replace(mWhere,"%%","%" & mid(mNotArr(i),3) & "%")
next
for i=0 to ubound(mQueryArr)
mQueryArr(i)=replace(mQueryArr(i),chr(1)," ")
mQueryArr(i)=replace(mWhere,"%%","%" & mid(mQueryArr(i),2) & "%")
next
'tejpa ihop en färdig fråga
mQuery=join(mQueryArr," OR ")
if mQuery<>"" then 
'##TA BORT
'mQuery="(" & mQuery & ")"
if ubound(mAndArr) > -1 then mQuery=mQuery & " AND "
end if
mQuery=mQuery & join(mAndArr," AND ")
if mQuery<>"" and ubound(mNotArr) > -1 then mQuery=mQuery & " AND NOT "
mQuery=mSQL & mQuery & join(mNotArr," AND NOT ")

mQuery=mQuery & " ORDER BY ticketnotes.datetime DESC, tickets.datetime DESC"
'frågan är klar! Ligger i mQuery
```

Nån som vet?

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

## #2 — Brimba, 2005-09-13T15:59Z

Nedanstående gör ungefär det du vill.

```
declare @threads table(id int, threadCreated datetime)
declare @posts table(id int, threadId int, data varchar(500), postDate datetime)

insert into @threads values (11, '2005-09-10')
insert into @threads values (12, '2005-09-11')

insert into @posts values (1, 11, 'post 1 - thread 11', '2005-09-10')
insert into @posts values (2, 12, 'post 1 - thread 12', '2005-09-11')
insert into @posts values (3, 11, 'post 2 - thread 11', '2005-09-12')
insert into @posts values (4, 11, 'post 3 - thread 11', '2005-09-13')
insert into @posts values (5, 12, 'post 1 - thread 13', '2005-09-13')

select	
	t2.data
from 
	@threads t1
	inner join @posts t2 on t1.id = t2.threadId and t2.id = (select max(id) from @posts where threadId = t2.threadId)
```

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

## #3 — G8, 2005-09-15T07:32Z

Hmm, du tror inte du kan förklara lite hur jag skulle konfiguera din kod, får det inte att funka alls...

Tack

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

## #4 — LarsG, 2005-09-15T18:36Z

```
SELECT t.id, 
t.notes, 
t.status, 
t.keyword, 
tn.note, 
tn.datetime, 
tn.id AS TnID 
FROM tickets INNER JOIN ticketnotes tn
On tn.ticketid = t.id 
where tn.datetime = (select max(datetime)
  from tickenotes
 where ticketid = tn.ticketid)
and keyword > '""' AND "
```

usw

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

## #5 — G8, 2005-09-16T11:15Z

Tack LarsG, superbt som vanligt...

Fick modifiera koden lite bara för att det skulle funka...

//G8

```
mSQL="SELECT tickets.id AS TID, tickets.notes, tickets.status, tickets.keyword, ticketnotes.note, ticketnotes.datetime, ticketnotes.id AS TnID "&_
     "FROM tickets INNER JOIN ticketnotes On ticketnotes.ticketid = tickets.id WHERE ticketnotes.datetime = (SELECT MAX(ticketnotes.datetime) "&_
     "FROM ticketnotes WHERE ticketid = tickets.ID) AND keyword > '""' AND "
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/134201-skriv-inte-ut-dubletter
