---
title: "Hämta märken med mest produkter"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/184174-hämta-märken-med-mest-produkter"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Icebreaker"
published: "2010-07-25T13:35:29.000Z"
updated: "2010-07-25T15:28:01.000Z"
replies: 5
views: 583
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/184174-hämta-märken-med-mest-produkter"
---

# Hämta märken med mest produkter

## #1 — Icebreaker, 2010-07-25T13:35Z

Hej! Behöver lite hjälp med en SQL-fråga. Jag har 2 tabeller, en med märken och en med produkter. Nu vill jag, låt oss säga, lista ut de TOP 3 märken (BrandName) som innehåller flest produkter. Om flera märken har samma antal produkter kan vi sortera dem på BrandName ASC.

Så här ser tabellerna ut, lägger in lite exempeldata:

```
[U]tblBrand[/U]
BrandID   BrandName
1         Converse
2         Adidas
3         Puma
4         Nike
```

```
[U]tblProduct[/U]
ProductID     ProductName     BrandID
100           Stan Smith      2
101           Court 6T5       4
102           Adi Racer       2
103           Drift Cat       3
104           Game Point      3
105           Duramo M        2
106           All Star        1
107           Classic         4
```

Resultatet av frågan bör i ovanstående fall bli:
Adidas
Nike
Puma

Förslag?  :)

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

## #2 — GunnarD, 2010-07-25T14:09Z

Något så här borde fungera.

```
SELECT b.BrandName, COUNT(p.BrandId) 
FROM tblBrand AS b
LEFT JOIN tblProduct AS p ON b.BrandId=p.BrandId 
GROUP BY p.BrandId 
ORDER BY b.BrandName
LIMIT 3;
```

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

## #3 — rhdf, 2010-07-25T14:16Z

Denna funkar :)

```
SELECT b.BrandName, COUNT(p.BrandId) as ProdCount
FROM tblBrand AS b
LEFT JOIN tblProduct AS p ON b.BrandId=p.BrandId
GROUP BY p.BrandId
ORDER BY prodcount DESC, b.BrandName
LIMIT 3;
```

Edit: såg att GunnarD var snabbare, får skylla på att min version faktist är testad ;)
snyggade till om min kod för att lättare se skillnaden

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

## #4 — Icebreaker, 2010-07-25T14:44Z

Tack för svaren, tror vi är på rätt väg här :) Glömde dock att säga att det är MS SQL (SP). Och som jag förstått så fungerar inte LIMIT-kommandot där. Antar att TOP 3 ska in någonstans istället? Googlade lite snabbt men fick inte fram någon vettig info =/

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

## #5 — rhdf, 2010-07-25T14:48Z

TOP skall alltid(?) vara direkt efter SELECT.
Jag har även för mig att MS SQL ogillar sortering på alias så det blir nånting i stil med
ORDER BY COUNT(p.BrandId) DESC, b.BrandName för att lösa sorteringen

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

## #6 — Icebreaker, 2010-07-25T15:28Z

Tack rhdf!  :) Testade mig fram lite och detta verkar fungera:

```
SELECT TOP 3 b.BrandName, COUNT(p.BrandID) 
FROM tblBrand AS b
LEFT JOIN tblProduct AS p ON b.BrandID=p.BrandID 
GROUP BY p.BrandID, b.BrandName 
ORDER BY COUNT(p.BrandId) DESC, b.BrandName
```

 :bire

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/184174-hämta-märken-med-mest-produkter
