---
title: "Hur sorterar manut från två tabeller"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/124911-hur-sorterar-manut-från-två-tabeller"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "wazid"
published: "2005-03-22T19:03:28.000Z"
updated: "2005-03-28T16:53:35.000Z"
replies: 7
views: 316
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/124911-hur-sorterar-manut-från-två-tabeller"
---

# Hur sorterar manut från två tabeller

## #1 — wazid, 2005-03-22T19:03Z

Hej

Så här är läget:
Jag har en databas där jag kan få ut en lista med kunders omsättning (lönsamhet), sorterad i fallande ordning.

Sedan kan jag få ut en lista på produkters omsättning (lönsamhet) i fallande ordning.

Jag har sparat dessa två som vyer.

Nu skulle jag vilja kunna få ut tex de produkter som finns långt ned på listan och som endast köps av kunder som är långt ned på sin lista.
Vill alltså få ut olönsamma produkter som köps av olönsamma kunder.

Någon som har lite ledtrådar på hur man ska göra...

MvH

David

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

## #2 — LarsG, 2005-03-22T19:08Z

Hur definerar du vad som är låg lönsamhet?

De 10 med lägst  omsättning?

Under halva medianvärdet?

Mindre än 30 % av den med högst  omsättning?

Hur vet du vilken kund som köpt vilken produkt?

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

## #3 — wazid, 2005-03-22T19:23Z

Låt oss säga att jag vill köra efter 80/20 regeln.
De som är bland de 20% högsta är bra. De övirga 80% är inte bra.

Jag har en försäljningstabell med alla orderrader och i den har jag kundnr och artikelnr.

Jag skulle tro att den kan bli användbar.

MvH

David

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

## #4 — LarsG, 2005-03-22T20:21Z

av =\> vy för artiklar 
\-------------------------
artikelnr 
total -- total försäljning för denna artikel

kv =\> vy för kunder
\-------------------------
kundnr 
total -- totalt köp för denna kund

forsaljning =\> ordertabell
\---------------------------------
artikelnr
kundnr

```
select * from forsaljning
where artikelnr in(
select av1.artikelnr
 from av av1,
   av av2          
 where  av1.total >= av2.total  
 group by av1.artikelnr,av1.total 
  having count(*) <= (select 0.8*(count(*)+0.0) from av))
and kundnr in(
select kv1.kundnr
 from kv kv1,
   kv kv2          
 where kv1.total >= kv2.total  
 group by kv1.kundnr,kv1.total 
  having count(*) <= (select 0.8*(count(*)+0.0) from kv))
```

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

## #5 — wazid, 2005-03-23T15:34Z

Ja, det verkar bli ett resultat.
Jag får återkomma då jag validerat resultatet.

Det tar väldigt lång tid dock.
Nu har vi ganska många orderrader.
Jag avbröt körningen efter 10 timmar..

MvH

David

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

## #6 — wazid, 2005-03-28T09:51Z

No körde jag igenom hela orderradstabellen för ett år.
Det tog 34 timmar....

Jag få ut ett resultat, men jag tror att jag får med alla produkter som är olönsamma.
Jag vill enbart få med em om de endast köps av kunder som är olönsamma.

Jag borde nog kunna köra distinct på Försäjlning, så att det inte blir så många rader att loopa igenom.

Kanske man ska gå tillväga på något annat sätt?
Kan man i frågan istället jämföra kunderna mot en tabell där jag har med enbart de kunder som är lönsamma.
Och om produkten har en träff i denna tabellen, så ska produkten inte tas med i slutresultatet.

MVH

David

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

## #7 — LarsG, 2005-03-28T12:16Z

> Jag få ut ett resultat, men jag tror att jag får med alla produkter som är olönsamma.
> Jag vill enbart få med em om de endast köps av kunder som är olönsamma.

Då jag har AND mellan villkoren så borde resultatet bli det du vill. Om jag tänker rätt så borde du få med 64 % av alla  försäljningar.

Att, som du är inne på, skapa temporärtabeller (indexerade på artikelnr och kundnr respektive) som enbart innehåller relevanta poster borde snabba upp det väsentligt.

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

## #8 — wazid, 2005-03-28T16:53Z

Ok jag försöker på ett annat sätt, men får inte till det riktigt.

Jag loopar igenom orderraderna (forsaljning)
och vill bara få med de som inte förekommer i nästa selectsats.
I den selectsatsen så har jag gjort en tabell av de lönsamma kunderna och alla orderrader som de tillsammans har gjort.

```
select distinct kundnr, artikelnr from forsaljning
where not  exists(
SELECT     
[874_lonsamma_kunder].kundnr, Forsaljning.artikelnr
FROM         
[874_lonsamma_kunder] 
INNER JOIN Forsaljning 
ON [874_lonsamma_kunder].kundnr = Forsaljning.kundnr
)
```

Men jag får ut ett tomt resultat.....
Någon som ser felet?

MvH

David

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/124911-hur-sorterar-manut-från-två-tabeller
