---
title: "Enklaste sättet att slippa bamseselect?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/102618-enklaste-sättet-att-slippa-bamseselect"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Joakim"
published: "2004-04-29T09:44:22.000Z"
updated: "2004-05-13T08:54:33.000Z"
replies: 9
views: 411
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/102618-enklaste-sättet-att-slippa-bamseselect"
---

# Enklaste sättet att slippa bamseselect?

## #1 — Joakim, 2004-04-29T09:44Z

Hellu,

Följande problem klurar jag lite på, exempel:

Vi har tre tabeller, en med nyheter med fält för tid, unikt id, rubrik, text och nyhetskategori samt en tabell med användarnas val av vilka nyhetskategorier de vill bevaka.

Tabell 'news':

```
ID
UID
CATEGORY_UID
HEADLINE
TEXT
```

Tabell 'news_selections':

```
ID
UID
USER_UID
CATEGORY_UID
```

Tabell 'news_category':

```
ID
UID
NAME
```

Kan jag göra någon form av select som väljer de nyhetsartiklar som ligger i någon av de kategorier som användaren valt att prenumerera på?

Annars kan jag tänka mig att man kan loopa igenom 'news_selections' och låta mitt script bygga en selectsats och lägga till de kategorier som en viss användare valt. Detta blir dock en bamseselect som jag inbillar mig att man gärna slipper. Och jag vill ju ha allt så dynamiskt som möjligt för att enkelt kunna lägga til / ta bort t.ex. kategorier.

Upplys mig =)

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

## #2 — LarsG, 2004-04-29T10:30Z

```
select news.id,news.headline,news.text
from news join news_selection
on news.category_uid = news_selection.category_uid
where uid = 4711
```

Med reservation för feltolkning av olika kolumners innebörd.

Flyttas från Mysql.

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

## #3 — K@llen, 2004-04-29T11:01Z

Om databashanteraren är MySQL så köper den inte att bara skriva "join", utan du måste definiera vilken join du gör: "left, inner, right osv".

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

## #4 — LarsG, 2004-04-29T12:27Z

Så står det inte i deras dokumentation. Sickna enar.

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

## #5 — K@llen, 2004-04-29T12:38Z

> **LarsG skrev:**
>
> Så står det inte i deras dokumentation. Sickna enar.

Då ljuger de. ;)

Jag har vid flertalet tillfällen fått fel i 3.58 på grund av detta. Sedan när jag skrivit ut vilken typ av join jag vill göra har det fungerat.

```
select * from GroupUser g
inner join User u
on g.userId = u.userId
```

 

Ger ett väntat resultat på mina testtabeller

```
select * from GroupUser g
join User u
on g.userId = u.userId
```

Ovanstående ger:

> You have an error in your SQL syntax near 'ON g.userId = u.userId' at line 3

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

## #6 — asmodie, 2004-04-29T19:22Z

Detta kanske är en sugit lösning men något i denna stil:
SELECT \* FROM news WHERE CATEGORY_UID = (SELECT CATEGORY_UID FROM news_selections WHERE USER_UID = X)  

Slö men enkel lösning.

X är användar id:t

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

## #7 — LarsG, 2004-04-30T08:28Z

Den lösningen fungerar inte i Mysql. Dessutom så är det bättre med in än = i detta fall.

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

## #8 — Joakim, 2004-05-11T19:25Z

Jag vet inte om jag var otydlig =) men det finns ett antal kategorier, sport, inrikes, nöje osv. det jag vill kunna göra är att lista de nyheter vars kategori är någon av de som som den aktuell användare valt och som finns. Så om användare 01 har valt kategori 02 och 03 för att förenkla det hela  så ska selecten välja de nyheter som finns i kategori 02 och 03. har för mycket feber för att förklara det här vettigt \*sucka\* det är nog enklare än vad jag får det till dock =)

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

## #9 — LarsG, 2004-05-11T19:50Z

Vad är det för problem med den fråga som jag föreslog?

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

## #10 — Joakim, 2004-05-13T08:54Z

Nejdå, mina exempel var ju klart förenklade, men med lite eftertanke så var det ju egentligen inte så svårt. Fokuserade nog bara på fel tänk =)

Tack!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/102618-enklaste-sättet-att-slippa-bamseselect
