---
title: "Sorteringsproblem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/150489-sorteringsproblem"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Ramzeus"
published: "2006-08-24T11:53:16.000Z"
updated: "2006-08-24T12:02:23.000Z"
replies: 1
views: 272
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/150489-sorteringsproblem"
---

# Sorteringsproblem

## #1 — Ramzeus, 2006-08-24T11:53Z

Jag håller på med en SQL-fråga som ska hämta ut ett antal maskiner (bilar, mopeder, mfl) från en tabell. Dessa ska sedan matchas med en ägare och listas i en tabell.

Ungefär så här:

```
Namn            Nuvarande ägare 
NAO 903         Nisse
KEO 876         Olle
APA 123         Jörgen
```

Jag har tre tabeller; en maskintabell, en ägartabell och en relationstabell.
Relationstabellen innehåller förutom en relation till de vardera ägar- och maskintabellerna även ett start- och slutdatum för ägandet.
Min SQL-fråga ser ut så här:

```
SELECT 
	IFNULL(m.reg_nr, IFNULL(m.chassis_nr, IFNULL(m.serial_code, null))) AS name, 
	m.object_type, m.model, m.manufacturer, m.description, c.name AS current_owner, m.id
FROM machines m
LEFT JOIN machine_owners mo ON mo.machine_id=m.id AND mo.dt_end IS NULL
LEFT JOIN customers c ON c.id=mo.customer_id
GROUP BY m.id
ORDER BY name
```

Jag definerar en ägare som en relation med ett startdatum men inget slutdatum.

SQL-frågan fungerar prima i de flesta fall, men i vissa fall så kan det hända att det finns två ägare utan slutdatum (dt_end) i relationstabellen (handhavandefel t.ex). I så fall vill jag ha fram den senaste ägaren som finns med i relationen. I mitt fall får jag bara fram den första. Jag vill alltså i första hand ha fram den ägare som har senaste startdatumet (dt_start) och om det finns två med samma startdatum så ska den välja den med högst ID-nummer.

Hur kan jag göra för att lyckas med detta?

Jag använder MySQL 5.0

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

## #2 — LarsG, 2006-08-24T12:02Z

```
SELECT 
	coalesce(m.reg_nr, m.chassis_nr, m.serial_code) AS name, 
	m.object_type, 
        m.model, 
        m.manufacturer, 
        m.description, 
        c.name AS current_owner, 
        m.id
   FROM machines m
   JOIN machine_owners mo ON mo.machine_id=m.id 
   JOIN customers c ON c.id=mo.customer_id
 where mo.dt_start in
      (select max(dt_start)
         from machine_owners
        where machine_owners.machine_id=m.id)
   and mo.dt_end is null
ORDER BY name
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/150489-sorteringsproblem
