---
title: "Raderar inte allt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/100073-raderar-inte-allt"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Inferis"
published: "2004-03-22T15:08:07.000Z"
updated: "2004-03-22T16:33:29.000Z"
replies: 14
views: 401
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/100073-raderar-inte-allt"
---

# Raderar inte allt

## #1 — Inferis, 2004-03-22T15:08Z

Denna koden raderar alla poster som den ska där \[Besvarat\] är 2, men inte där \[Besvarat\] är 3?

```
SQLin = "DELETE FROM Meddelanden WHERE Besvarat = 2 OR Besvarat = 3 IN (SELECT Senast FROM Medlemmar WHERE [Senast] = NULL )"
```

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

## #2 — Inferis, 2004-03-22T15:09Z

Detta ska inte ligga i detta forumet va? Men jag hittade liknande saker när jag sökte just i Asp/Vbscript.

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

## #3 — OveRRidE, 2004-03-22T15:18Z

> Men jag hittade liknande saker när jag sökte just i Asp/Vbscript.

Jepp. Vi kan inte alltid hålla koll på alla trådar. Dessutom är många av dem gränsfall mellan ASP och SQL. 

Jag flyttar iallafall denna tråd från ASP, VBScript till SQL, eftersom det är en SQL-fråga, snarare än ett script-problem.

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

## #4 — LarsG, 2004-03-22T15:25Z

Jag förstår inte att någon DBMS godkänner den frågan över huvud taget. (Mysql  förmodar jag.)

Den här delen förstår jag

```
DELETE FROM Meddelanden 
WHERE Besvarat = 2 OR Besvarat = 3
```

Vad menar du med 

```
IN (SELECT Senast FROM Medlemmar WHERE [Senast] = NULL )
```

?

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

## #5 — Inferis, 2004-03-22T15:28Z

Jag försöker få den att radera alla poster i Meddelanden där fältet Senast är tomt i tabellen Medlemmar.

Först görs en koll om medlemmen inte loggat ut utan bara stängt fönstret, om så är fallet så sätts senast till Null.
Men samtidigt ska dennes meddelanden raderas automatiskt.
(Om Besvarat är 1,4 eller 5 ska det INTE raderas, bara 2 eller 3)

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

## #6 — LarsG, 2004-03-22T15:32Z

Hur kopplar du ihop meddelandet med en viss användare då?

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

## #7 — Inferis, 2004-03-22T15:36Z

Det var ju det jag försökte göra med IN.
Det kan ju vara flera användare som inte loggat ut, utan bara stängt fönstret.

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

## #8 — LarsG, 2004-03-22T15:41Z

Jo förvisso. Det jag avser är att du i tabellen meddelanden måste ha någon kolumn som anger vem som "äger" meddelandet eller?

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

## #9 — Inferis, 2004-03-22T15:42Z

Alla inloggade medlemmar som laddar en sida uppdaterar fältet Senast i tabellen Medlemmar med now().
Om Senast är 20 minuter gammalt så sätts det till NULL av en annan medlem som laddar en sida. Då anses den medlemmen vara automatiskt utloggad.

Jag vill att alla meddelanden som är flaggade som 2 eller 3 ska raderas där medlemmarna har blivit automatiskt urloggade.

Ungefär som 

```
delete from meddelanden Where Meddelanden.Besvarat =2 OR Meddelanden.Besvarat= 3 AND Medlemmar.Senast = NULL"
```

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

## #10 — LarsG, 2004-03-22T15:51Z

```
delete from meddelanden 
Where Besvarat  in (2,3)
and medlemsid in (select medlemsid 
from medlemmar 
where senast is null)
```

Nu har jag gissat på några kolumnnamn.

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

## #11 — Inferis, 2004-03-22T15:56Z

Tack LarsG, men Id på medlemmar finns inte.
Jag vill rensa upp efter alla som inte loggat ut.

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

## #12 — Inferis, 2004-03-22T15:59Z

Hela koden:

```
' Ta bort alla som inte gjort något på 20 min - utloggade
SQL = "UPDATE Medlemmar set [senast] = NULL, Loggade_in =#" & now() & "# where Senast < dateadd('n',-20,now())"
connection.execute(SQL)
' Radera meddelanden automatiskt 1=oläst, 2-3 raderas, 4=sparas
SQL2 = "DELETE FROM Meddelanden WHERE Lastes < dateadd('n',-20,now()) AND Besvarat in (2,3) IN (SELECT Senast FROM Medlemmar WHERE [Senast] = NULL )"
connection.execute(SQL2)
```

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

## #13 — LarsG, 2004-03-22T16:10Z

Du vill alltså bara utföra detta om det finns en rad där senast är null? 

```
SQL2 = "DELETE FROM Meddelanden WHERE Lastes < dateadd('n',-20,now()) AND Besvarat in (2,3) and exists (SELECT * FROM Medlemmar WHERE Senast is NULL )"
```

Ett villkor som 

```
where kolumn = null
```

är aldrig sant. (Det är inte godkänt enligt standard att skriva så.)

Jag förstår inte varför du vill ha exists-villkoret med, men det är väl inget som angår mig.

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

## #14 — Inferis, 2004-03-22T16:14Z

När medlemmarna har öppnat ett meddelande så markeras det som läst.
Om dessa inte väljer att spara det så raderas det automatiskt när dem loggar ut. Det funkar jättebra. Men jag vill ju radera dem breven automatiskt om de inte klickar på logga ut.

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

## #15 — Inferis, 2004-03-22T16:33Z

Gjorde så att meddelanden raderas efter en timme om dem inte är flaggade som sparas.

```
SQLin2 = "DELETE FROM Meddelanden WHERE Lastes < dateadd('n',-60,now()) AND Besvarat in (2,3) "
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/100073-raderar-inte-allt
