---
title: "Relationsproblem i mysql"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/137955-relationsproblem-i-mysql"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "nicke78"
published: "2005-11-20T12:03:29.000Z"
updated: "2005-11-21T08:43:06.000Z"
replies: 5
views: 242
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/137955-relationsproblem-i-mysql"
---

# Relationsproblem i mysql

## #1 — nicke78, 2005-11-20T12:03Z

Jag har två tabeller i mysql. I den ena ligger det objekt med information som ska presenteras och i den andra ligger information om bilden. Varje objekt kan ha flera bilder knytna till sig via ett table som heter bilder. Nu skulle jag dock endast vilja läsa ut en första bilden på varje objekt och presentera sex stycken åt gången. Det ser ut som nedan, ursäkta formateringen..

\<table = objekt\>
id
info
pris
\</table\>

\<table = bilder\>
id
oid =\> det objektet som bilden hör till
bild =\> filnamn
\</table\>

SELECT objekt.id as id, bild FROM bilder LEFT JOIN objekt ON objekt.id=bilder.oid

Det ger en lång lista på 57 rader och 33 objekt. Hur ska jag formulera om frågan så jag får ut de första sex objektens bild. Antar att jag ska kombinera detta tillsammans med limit. Jag använder PHP som programmerings språk, men jag tror att lösningen på problemet ligger i sql koden...

Tack på förhand
//Niklas

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

## #2 — LarsG, 2005-11-20T14:14Z

Hur definierar du vad som är första bilden?

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

## #3 — nicke78, 2005-11-20T15:17Z

Det baseras på primärnyckeln som är id. Oid är en sekundärnyckel som länkar samman bilden med objektets primärnyckel. 

Så första bilden är helt enkelt den bilden med lägst id, den som kommer först ur databasen då objekt.id=bilder.oid

//Niklas

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

## #4 — LarsG, 2005-11-20T17:14Z

```
select o.id, o.info, o.pris, b.bild
from object o join bilder b on o.id = b.oid
 where b.id in 
    (select min(id)
        from bilder
       where b.oid = bilder.oid)
```

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

## #5 — nicke78, 2005-11-21T08:40Z

Det funkar inte, får följande fel meddelande.

\[Localhost\] ERROR 1064: You have an error in your SQL syntax near 'on o.id = b.oid
 where b.id in 
    (select min(id)
        from bilder
       w' at line 2

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

## #6 — LarsG, 2005-11-21T08:43Z

Vilken version av Mysql har du? Jag förutsätter 4.1 eller senare.

Det går att skriva om frågan utan subselect, något mer svårbegriplig dock

```
select o.id, o.info, o.pris, b1.bild,b1.id as bildid
from object o inner join bilder b1 on o.id = b.oid 
inner join bilder b2 on b1.oid = b2.oid
group by o.id, o.info, o.pris, b1.bild,b1.id
having b1.id = min(b2.id)
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/137955-relationsproblem-i-mysql
