Toon posts:

[MySQL] Query vragen

Pagina: 1
Acties:
  • 57 views sinds 30-01-2008

Verwijderd

Topicstarter
Hoi tweakers bezoekers,

Dit is denk ik een van de vele MySQL SELECT query topics, maar dan weer net iets anders met andere vraagstukken.

Ik heb de volgende MYSQL schema
Afbeeldingslocatie: http://forum.turksestudent.nl/index.php?act=Attach&type=post&id=31

Ik moet de volgende vraagstuk beantwoorden :

27. Hoeveel verschillende artikelen worden geleverd door de leverancier met het grootste assortiment artikelen?

Ik ga ervan uit dat je meerdere SELECT clauses moet gebruiken om de gevraagde gegevens uit de database te halen. Ik snap echter nog steeds niet hoe je de leverancier id met het grootste assortiment artikelen kunt halen.

Voor velen zal dit een simpel vraagstuk zijn, maar ik kom er echt niet uit. Kan iemand me hierbij helpen?

Met vriendelijke groet,

Ozad

  • Optix
  • Registratie: Maart 2005
  • Laatst online: 06-02 18:12
Volgens mij zijn de scholen nog niet de begonnen, maar is dit je huiswerk? :X

.


  • Otacon
  • Registratie: September 2000
  • Laatst online: 13-02 12:22
Lijkt me toch niet zo moeilijk met een ORDER en een LIMIT aan het eind

Heb je zelf trouwens al wat verzonnen hoe je query er ongeveer moet uitzien?

[ Voor 36% gewijzigd door Otacon op 21-08-2006 22:33 ]


Verwijderd

Topicstarter
Het is een oud "huiswerk". Ik heb nog tot eind deze maand de tijd en moet nog enkele vragen beantwoorden. Helaas zijn de overgebleven vragen wel de moeilijkste :(

Verwijderd

Topicstarter
Otacon schreef op maandag 21 augustus 2006 @ 22:32:
Lijkt me toch niet zo moeilijk met een ORDER en een LIMIT aan het eind

Heb je zelf trouwens al wat verzonnen hoe je query er ongeveer moet uitzien?
Hey Otacon,

8)7 dat ik daar niet eerder aan heb gedacht. Ik wilde telkens gebruik maken van Count en Max, maar deze zijn moeilijk te combineren in dit vraagstuk.

Met ORDER en LIMIT kom ik nu een eindje verder, maar ik kom gelijk weer knel als ik artikelen erbij betrek :?

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 05:14

aex351

I am the one

De TS snapt hier volgens mij geen bal van maar je moet de leverantie tabel gebruiken. Haal daar de ID uit met de hoogste nummer artikelen en de naam van de leverancier haal je met behulp van die ID weer uit de tabel van de leverant

< dit stukje webruimte is te huur >


  • aex351
  • Registratie: Juni 2005
  • Laatst online: 05:14

aex351

I am the one

Otacon schreef op maandag 21 augustus 2006 @ 22:40:
Misschien heb je het vraagstuk ook niet helemaal begrepen

jij schrijft:

[...]


de vraag was:

[...]


"leverancier id" zie ik nergens staan dus ik snap niet wat je ermee wilt.
lev = de leverancier id . Vraag me af of de TS dat door heeft :+

[ Voor 6% gewijzigd door aex351 op 21-08-2006 22:41 ]

< dit stukje webruimte is te huur >


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 21 augustus 2006 @ 22:34:
[...]

Hey Otacon,

8)7 dat ik daar niet eerder aan heb gedacht. Ik wilde telkens gebruik maken van Count en Max, maar deze zijn moeilijk te combineren in dit vraagstuk.

Met ORDER en LIMIT kom ik nu een eindje verder, maar ik kom gelijk weer knel als ik artikelen erbij betrek :?
Met COUNT, MAX, GROUP BY en HAVING moet je een heel eind kunnen komen? Wat voor queries had je zelf al geprobeerd en wat werkte daar niet aan? We willen je best helpen met je huiswerk, maar daarbij willen we wel graag zien dat je zelf ook al wat moeite in de oplossing ervan hebt gestoken. Het primaire doel van huiswerk is dat je er wat van leert, niet dat het af komt. ;)

@NightFade: dus? Wat is je punt? Huiswerktopics zijn niet per definitie fout!

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Nou wat ik doe is eigenlijk als volgt. Ik deel de vraag in tween.
De eerste is : welke leverancier heeft het grootste assortiment artikelen.? (bijvoorbeeld x)
De tweede is : hoeveel verschillende artikelen heeft deze leverancier?

Maak ik nog een beredeneer fout?

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 05:14

aex351

I am the one

Verwijderd schreef op maandag 21 augustus 2006 @ 22:43:
Nou wat ik doe is eigenlijk als volgt. Ik deel de vraag in tween.
De eerste is : welke leverancier heeft het grootste assortiment artikelen.? (bijvoorbeeld x)
De tweede is : hoeveel verschillende artikelen heeft deze leverancier?

Maak ik nog een beredeneer fout?
assortiment artikelen + welk hij kan verkopen. Daarom moet je ook de leverantie tabel gebruiken en niet de inkart als ik het goed heb.

< dit stukje webruimte is te huur >


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 21 augustus 2006 @ 22:43:
Nou wat ik doe is eigenlijk als volgt. Ik deel de vraag in tween.
De eerste is : welke leverancier heeft het grootste assortiment artikelen.? (bijvoorbeeld x)
De tweede is : hoeveel verschillende artikelen heeft deze leverancier?

Maak ik nog een beredeneer fout?
Nee, zo te zien niet, maar welke queries heb je al geprobeerd dan? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
SELECT lev, COUNT(art) FROM inkart GROUP BY lev

Dit had ik (althans voor mijn eerste deelvraag)... ik ben nu wel een stuk verder..

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 00:23
Verwijderd schreef op maandag 21 augustus 2006 @ 22:43:
Nou wat ik doe is eigenlijk als volgt. Ik deel de vraag in tween.
De eerste is : welke leverancier heeft het grootste assortiment artikelen.? (bijvoorbeeld x)
De tweede is : hoeveel verschillende artikelen heeft deze leverancier?

Maak ik nog een beredeneer fout?
Nee hoor, je zit op de goede weg. En dit kan ook in één query worden opgelost door een subquery te gebruiken.

In de subquery vraag je de leverancier-ID op met het meeste aantal producten (inkart) en in de hoofdquery tel je het aantal producten die die leverancier kan leveren.

[ Voor 42% gewijzigd door Jaap-Jan op 21-08-2006 22:57 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Verwijderd

Topicstarter
SELECT COUNT(DISTINCT art)
FROM inkart WHERE lev = (
SELECT lev
FROM inkart
GROUP BY lev
ORDER BY COUNT(art) DESC
LIMIT 1)

:) Denk dat dit'm is.. zo ja, kan iemand ook in een query noteren?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Die query behoort een foutmelding te geven, dus dat kan hem nooit zijn. ;) LIMIT mag niet binnen een subquery. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Graag wil ik iedereen bedanken voor de reacties. Ik moet nu naar bed (ja, helaas morgen weer een werkdag).

Kan de topic verder gewoon open blijven? Ik ga namelijk morgen weer verder en heb nog enkele korte vragen waar ik graag bij geholpen wil worden.

Wens iedereen nog een goede nacht.

Verwijderd

Topicstarter
-NMe- schreef op maandag 21 augustus 2006 @ 22:57:
Die query behoort een foutmelding te geven, dus dat kan hem nooit zijn. ;) LIMIT mag niet binnen een subquery. ;)
Hij doet het wel gewoon

  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 14-02 12:15
Dit is toch gewoon goed of ben ik gaar na een lange dag werken?
SQL:
1
SELECT COUNT(art) FROM inkart GROUP BY lev ORDER BY count(art) DESC limit 0,1

Ik zie ff niet waarom je een subquery nodig hebt?

Verwijderd

Topicstarter
@toeter,

Nu je het zegt :D
(ik denk dat ik de vragen voortaan niet ga hakken in meerdere subvragen )

Het zat'm dus eigenlijk bij de ORDER en LIMIT

Danku allen

  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 14-02 12:15
Gelukkig, ik kan het ook zonder peuk :P
subvragen zijn prima volgens mij hoor, alleen daarna even kijken hoe je het beste kan samenvegen.

Verwijderd

-NMe- schreef op maandag 21 augustus 2006 @ 22:57:
Die query behoort een foutmelding te geven, dus dat kan hem nooit zijn. ;) LIMIT mag niet binnen een subquery. ;)
LIMIT 1 zou doodgewoon moeten mogen, want dat levert een aggregate op. Overigens mogen andere LIMIT's ook prima in subqueries, maar niet in een singleton select.
Dus "WHERE lev = (SELECT lev FROM tabel ... LIMIT 3)" mag niet, maar "WHERE lev IN ()" of "WHERE EXISTS ()" weer wel.

Maar pin me er niet op vast, ik ben geen MySQL kenner. ;)

Verwijderd

Topicstarter
Dit keer heb ik zelf eentje gemaakt, maar weet niet of het klopt.. Als iemand ernaar wilt kijken?

19. Welke leveranciers leveren meer dan tien keer zoveel artikelen als leverancier "Electron BV" (lev,firmanaam, aantal artikelen)?

SQL:
1
2
3
4
5
6
7
8
9
10
11
SELECT leverancier.lev, leverancier.firmanaam, COUNT(inkart.art) AS aantal_artikelen
FROM leverancier, inkart
WHERE leverancier.lev = inkart.lev
GROUP BY leverancier.lev
    HAVING COUNT(inkart.art) > (
        SELECT COUNT(inkart.art)
        FROM inkart, leverancier
        WHERE inkart.lev = leverancier.lev
            AND leverancier.firmanaam = 'Electron BV '
            GROUP BY leverancier.lev
    ) * 10



Ziet er best complex uit :S

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:07

Creepy

Tactical Espionage Splatterer

Waarom denk je dat het niet klopt? Welke uitkomsten heb je nu? Wat had je verwacht? etc. Zie ook Programming Beleid - De Quickstart. Hierin vindt je wat zaken terug die we stiekum van je verwachten ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • whoami
  • Registratie: December 2000
  • Laatst online: 14-02 20:35
Huiswerkvragen moeten in PRG zeker kunnen echter... het kan niet de bedoeling zijn dat de mensen in PRG jouw huiswerk gaan maken / oplossen.
De bedoeling van huiswerk is nog steeds dat jij -als student- er nog iets van opsteekt. Ik vind dus dat je zelf wel iets meer moeite mag doen om zelf tot een oplossing te komen. Neem je boeken / manuals / whatever erbij, en probeer zelf eens eea uit, ipv het volledig aan anderen over te laten.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.