Permalänk
Medlem

MySQL fråga

Jag har en databas och när jag skriver

select jbsupplier.name, (jbsupply.quan * jbparts.weight) from jbsupplier inner join jbsupply on jbsupplier.id = jbsupply.supplier inner join jbparts on jbsupply.part = jbparts.id where jbsupplier.city in (select id from jbcity where jbcity.state = 'Mass');

Får jag följande tabell

+--------------+----------------------------------+ | name | (jbsupply.quan * jbparts.weight) | +--------------+----------------------------------+ | DEC | 10 | | DEC | 10 | | DEC | 640 | | DEC | 640 | | Fisher-Price | 685000 | | DEC | 1370 | | Fisher-Price | 450000 | | DEC | 450 | +--------------+----------------------------------+ 8 rows in set (0,01 sec)

Vad jag vill ha är dock en lista där varje name står en gång och summan av varje (jbsupply.quan * jbparts.weight) står till höger.

Men när jag skriver

select jbsupplier.name, SUM(jbsupply.quan * jbparts.weight) from jbsupplier inner join jbsupply on jbsupplier.id = jbsupply.supplier inner join jbparts on jbsupply.part = jbparts.id where jbsupplier.city in (select id from jbcity where jbcity.state = 'Mass');

får jag

+------+-------------------------------------+ | name | SUM(jbsupply.quan * jbparts.weight) | +------+-------------------------------------+ | DEC | 1138120 | +------+-------------------------------------+ 1 row in set (0,01 sec)

Varför slås DEC och Fisher-Price ihop?

Permalänk
Medlem

Re: MySQL fråga

Citat:

Ursprungligen inskrivet av Snejk
Varför slås DEC och Fisher-Price ihop?

Förmodligen för att du har missat att skriva in: GROUP BY name i SQL-frågan.

Permalänk
Medlem

Instämmer med Garret, du har glömt GROUP BY. Dvs, du ska "gruppera ihop" ditt resultat så att varje name visas en gång..

Permalänk
Medlem

Tack för svaren.