---
title: "Flytta avändare"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/80416-flytta-avändare"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Skarre"
published: "2003-06-24T08:38:02.000Z"
updated: "2003-06-25T08:39:39.000Z"
replies: 6
views: 224
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/80416-flytta-avändare"
---

# Flytta avändare

## #1 — Skarre, 2003-06-24T08:38Z

När jag raderar en personalkategori flyttar jag användarna som ingick denna till en speciell kategori för personal som inte tillhör någon kategori (categoryid = 6).

Tabellen "pers_categoryrelations":

```
-----------------------
| userid | categoryid |
-----------------------
|      1 |          2 |
|      1 |          3 |
-----------------------
```

Koden: 

```
'Flyttar användare till "Icke kategoriserade"
conn.Execute("UPDATE pers_categoryrelations SET categoryid = 6 WHERE categoryid = " & id)
		
'Raderar kategorin
conn.Execute("DELETE FROM pers_categories WHERE categoryid = " & id)
```

Men jag vill endast flytta användare dit om de inte tillhör någon annan kategori. Hur åstadkommer jag detta?

Förslag mottages tacksamt!

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

## #2 — Skarre, 2003-06-24T09:09Z

Jag kom just på att jag gjort det onödigt svårt för mig. Det vore kanske enklare att hämta icke-kategoriserade användare genom att hämta de som inte har några relationer, men hur gör jag det?

Låt säga att jag ska hämta användare från tabellen "users" om det inte finns någon post i "user_relations" som har samma userid.

Jag testade detta, men det funkade inget vidare:

```
SELECT DISTINCT users.userid FROM users, user_relations WHERE users.userid <> user_relations.userid
```

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

## #3 — LarsG, 2003-06-24T19:05Z

Då måste du göra flera saker

```
delete from pers_categoryrelations
 where userid in (select userid from
pers_categoryrelations
 where category not in ([den kategori som skall bort],6))
where category = [den kategori som skall bort]

update pers_categoryrelations
  set category = 6
 where category = [den kategori som skall bort]
   and userid not in 
 (select userid from pers_categoryrelations
   where category not in (6,4711))

delete from pers_category
 where category = [den kategori som skall bort]
```

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

## #4 — Skarre, 2003-06-25T07:53Z

Redigerat
Felet var det andra "WHERE" istället för "AND".

Det protesteras när jag försöker köra den första frågan vilken ser ut enligt nedan:

```
DELETE FROM pers_categoryrelations 
WHERE userid IN (SELECT userid FROM pers_categoryrelations WHERE categoryid NOT IN (12,6)) 
[red]AND[/red] categoryid = 12
```

![](http://member.webforum.nu/1826/relations.gif)

> Syntaxfel (operator saknas) i frågeuttrycket 'userid IN (SELECT userid FROM pers_categoryrelations WHERE categoryid NOT IN (12,6)) WHERE categoryid = 12'.

Vad betyder förresten "NOT IN (6,4711)" i nästa fråga? Var kommer 4711 ifrån? :)

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

## #5 — Skarre, 2003-06-25T08:23Z

Nu är det uppenbarligen den andra frågan som inte fungerar som den ska. De användare som ska flyttas till kategorin med id "6" gör inte det utan har kvar sin gamla relation, och detta gör i sin tur att den tredje frågan inte kan köras eftersom den försöker ta bort en rad som har relationer till pers_categoryrelations.

Redigerat 
Jag kortade ner den andra frågan och då fungerade det. Nu ser det ut enligt följande:

```
DELETE FROM pers_categoryrelations 
WHERE userid IN (SELECT userid FROM pers_categoryrelations 
WHERE categoryid NOT IN (14,6)) AND categoryid = 14

UPDATE pers_categoryrelations SET categoryid = 6 
WHERE categoryid = 14

DELETE FROM pers_categories 
WHERE categoryid = 14
```

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

## #6 — LarsG, 2003-06-25T08:34Z

4711 skall vara \[den kategori som skall bort\]

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

## #7 — Skarre, 2003-06-25T08:39Z

> **LarsG skrev:**
>
> 4711 skall vara \[den kategori som skall bort\]

Aha! Då fungerar det. Men jag klarade mig av någon anledning utan den sista "AND"-biten i den andra frågan.

Hursomhelst är det alltid lika trevligt att få en massa skön kod från dig Lars! Tack så mycket! :bire

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/80416-flytta-avändare
