---
title: "Budgivning"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/109307-budgivning"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Marcus E"
published: "2004-08-15T19:33:57.000Z"
updated: "2004-08-23T16:59:54.000Z"
replies: 23
views: 651
page: 1
pages: 2
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/109307-budgivning"
---

# Budgivning

_Sida 1 av 2._

## #1 — Marcus E, 2004-08-15T19:33Z

SQL är svårt att förstå för mig. Därför behöver jag lite hjälp med ett problem som jag har.

Jag har en tabell Products med ID och Name. Vidare har jag en tabell Bids med ID, ProductID, UserID, Bid.

Products innehåller produkterna man kan bjuda på och Bids innehåller buden. Hur kan jag plocka ut samtliga produkter med eventuellt bud och samtidigt få maxbudet?

Denna SQL-sats ska alltså även filtrera ut alla bud under maxbudet.
SELECT     Products.Name, Products.ID, Bids.Bid
FROM         (Products LEFT OUTER JOIN
                      Bids ON Products.ID = Bids.ProductID)

Tack på förhand.

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

## #2 — Peeer, 2004-08-15T21:00Z

```
select p.name, p.id, max(bid) as maxbid from products as p
left outer join bids as b on b.productid = p.id
group by p.id
```

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

## #3 — Marcus E, 2004-08-15T22:03Z

Tack. Fast det funkar inte.

"You tried to execute a query that does not include the specified expression 'name' as part of an aggregate function."

Tydligen kan mna lösa det genom att lägga till p.name sist. Finns det inget annat sätt?

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

## #4 — Peeer, 2004-08-15T22:07Z

Använder du access så får du byta 'name' mot något annat då det är ett reserverat ord.

[Källa](http://www.aspfaq.com/show.asp?id=2080)

> **Marcus E skrev:**
>
> Tydligen kan mna lösa det genom att lägga till p.name sist. Finns det inget annat sätt?

Lägga sist? Hur menar du nu?

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

## #5 — Marcus E, 2004-08-15T22:11Z

name kallar jag för något annat så det är inget problem.

Med lägga till sist menar jag:
select p.name, p.id, max(bid) as maxbid from products as p
left outer join bids as b on b.productid = p.id
group by p.id, p.name

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

## #6 — Marcus E, 2004-08-17T21:22Z

Fanns det något sätt att inte behöva GROUP BY för alla kolumner?

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

## #7 — Engine^, 2004-08-18T09:04Z

Tja... genom att köra MySQL... men det är inte SQL-standard.

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

## #8 — Marcus E, 2004-08-18T09:07Z

> **Engine^ skrev:**
>
> Tja... genom att köra MySQL... men det är inte SQL-standard.

Låt höra, jag tänkte ändå byta till MySQL.

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

## #9 — Engine^, 2004-08-18T09:34Z

Jag är inte sugen på att lära ut något som inte är "rätt", men det står att läsa om på MySQLs sidor. ;)

[MySQL - Developer Zone](http://dev.mysql.com)

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

## #10 — Gein, 2004-08-18T09:42Z

Flikar in med en liten fråga. Själv hade jag skrivit den sökta SQL-frågan som: 

```
SELECT p.Name, Max(bid) as maxbid FROM Products p, Bids b WHERE p.ID = b.ProductID GROUP BY b.ProductID
```

Vad är skillnaden med min fråga och Peeers? Är båda typerna SQL-standard?
(Har aldrig greppat det där med left right inner outer join)

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

## #11 — Peeer, 2004-08-18T09:57Z

Gein \> Med din fråga får du inte ut de produkter som ingen bjudit på.

Marcus \> Vad spelar det för roll om du har med en "group by"? Min fråga fungerar klockrent (åtminstone i mysql)

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

## #12 — Gein, 2004-08-18T10:01Z

Nej, juste. Men menar du att det inte går att skriva en likvärdig SQL-sats på "mitt sätt" som motsvarar den du skrivit?

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

## #13 — Marcus E, 2004-08-18T10:03Z

Engine: Jag struntar i vad som är standard eller fel. Huvudsaken är att det fungerar. Du får gärna hänvisa till vilken SQL-sats du tänkte på.

Peer: Frågan blir väldigt lång om jag vill hämta ut många kolumner. Det går inte att använda \*.

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

## #14 — Peeer, 2004-08-18T10:04Z

Möjligt att det går (på något udda vänster) att skriva om din innerjoin (som det är du skrivit), men jag kan det inte i alla fall (har inte försökt iof).

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

## #15 — Gein, 2004-08-18T10:05Z

> **Peeer skrev:**
>
> Möjligt att det går (på något udda vänster) att skriva om din innerjoin (som det är du skrivit), men jag kan det inte i alla fall (har inte försökt iof).

Får nog ta och skola om mej då. :)

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

## #16 — Peeer, 2004-08-18T10:06Z

> **Marcus E skrev:**
>
> Peer: Frågan blir väldigt lång om jag vill hämta ut många kolumner. Det går inte att använda \*.

```
select p.*, max(bid) as maxbid from products as p
left outer join bids as b on b.productid = p.id
group by p.id
```

Fungerar utmärkt för mig i alla fall.

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

## #17 — Marcus E, 2004-08-18T10:34Z

Inte i Access: Cannot group on fields selected with '\*' (Products).

Vad använder du?

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

## #18 — Peeer, 2004-08-18T21:08Z

MySQL. Access är inte mycket att hänga i julgranen.

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

## #19 — Marcus E, 2004-08-20T23:10Z

Jag har kört MySQL ett tag nu och det funkar bra.

Följdfråga kommer här. Jag vill ha ID-numret på maxbudet. Hur skriver jag då? Om jag använder bids.bid får jag fel ID.

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

## #20 — LarsG, 2004-08-22T11:06Z

Att Mysql tillåter att man inte anger alla icke-aggregerade kolumner i group by är inget att skryta med. Tvärtom så innebär det att man inte kan förutsäga vilket data man får.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/109307-budgivning  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/109307-budgivning/page2.md
