webForumDet fria alternativet

SQL-fråga

6 svar · 339 visningar · startad av Addeladde

AddeladdeMedlem sedan jan. 20012 997 inlägg
#1

Hej

Har en uppgift på KTH där jag ska få fram ett resultat från en databas. Jag har löst frågan och skickat in den men jag tyckte inte att det var någon snygg lösning eftersom jag själv fick räkna dem i en lista. Var dock inget krav på att lämna in sql-satsen.

Här är frågan:
Finns det någon vara som levereras av två eller fler olika företag?

Databasdiagram är:

Namn Schema
försäljning (avd, varunr, volym)
lager (avd, varunr, företag, volym)
leverantör (företag, adress)
vara (varunr, typ)

Man kan testa att skriva frågor mot databasen på denna adress:
http://dupond.nada.kth.se:8080/webbvaruhuset/

Det är en mySQL databas.

Min fråga ser ut så här men den behöver göras så att enbart företag som säljer två produkter visas.

Select v.typ, l.företag from vara v join lager l on v.varunr = l.varunr
group by v.typ, l.företag
order by v.typ

Försökt i nästan en timma med detta men inte lyckats. Inte så stor koll på just mySQL och många saker jag testat fungerar inte i databasen.

Gissar på att man ska använda någon form av having count(*) > 2 men det verkar inte fungera när man har group by.

om man gör en sub select och sätter den as namn
Så kan man inte i Where satsen använda namn > 2 heller...

Hur fixar jag detta?

LarsGMedlem sedan dec. 200012 465 inlägg
#2
Select typ
  from vara
 where varunr in
   (select varunr
      from lager
      group by varunr
      having count(distinct företag) > 1)
AddeladdeMedlem sedan jan. 20012 997 inlägg
#3

Fast det ger inte rätt resultat.
Om jag kör den så får jag bara tre produkter. Det finns betydligt fler produkter som flera företag levererar.

emissionMedlem sedan dec. 19996 095 inlägg
#4

Addeladde skrev:

Fast det ger inte rätt resultat.
Om jag kör den så får jag bara tre produkter. Det finns betydligt fler produkter som flera företag levererar.

LarsGs variant är rätt, så jag vill nog hävda att det inte alls finns fler dylika produkter. Eller, kan du ge ett exempel?

AddeladdeMedlem sedan jan. 20012 997 inlägg
#5

Om ni kör min fråga så ser ni att det finns fler produkter som samma företag levererar.

Exempel:
bestick, blomfat, blomkruka, blomma, bok, bröd, byxor, chips, filmjölk, frukt, grönsaker, herrsko, hundmat, hushållspapper, jordnötter, läskedryck, möbelpolish, mössa, penna, ryggsäck, stol, strumpor, tallrik, toalettpapper, tofflor, tvättmedel, underkjol, ögonskugga, öl

emissionMedlem sedan dec. 19996 095 inlägg
#6

Det finns fler varutyper, men inte fler varor.

select vara.typ
      from lager,vara
      where lager.varunr=vara.varunr
      group by vara.typ
      having count(distinct företag) > 1
AddeladdeMedlem sedan jan. 20012 997 inlägg
#7

Thanks

Genererad på 503 ms · cache AV · v20260730165559-full.f96bc7eb