Toon posts:

[T-SQL] Lastige query met verschillende GROUP BY en TOP

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wederom een (voor mij >:) ) lastige SQL query (MS SQL 2000)

Je hebt 3 tabellen (ff simpel opgesteld):

Soorten (id, soortnaam)
SoortProd_Koppeling (soort_id, item_id)
Item (item_id, naam)

Nu wil ik een query bouwen waarin hij uit 5 random (van de 50) soorten, 1 daarbij behorend random item selecteerd. Ik zelf denk dat het d.m.v. een "nested select" i.c.m. 2x een TOP + Group BY moet, maar ik heb geen idee hoe ik hem in elkaar moet knutselen :'( . De query moet ook nog eens zo optimaal mogelijk werken ivm erg grote tabellen.....

code:
1
2
3
4
5
select id, soortnaam, naam 
from soorten 
join SoortProd_Koppeling on SoortProd_Koppeling.soort_id = soorten.id 
join Item on Item.item_id = SoortProd_Koppeling.item_id 
group by id, soortnaam, naam


8)7

In dit geval krijg je dus alle items met alle soorten. Waar o waar moet de 2e select komen.....

  • Haploid
  • Registratie: Maart 2002
  • Laatst online: 29-12-2021

Haploid

Doh!

Random records kiezen uit een set is niet iets dat wordt ondersteund door welke database engine dan ook. Dat kun je tot op zekere hoogte zelf in elkaar knutselen; ik heb het zelf ook al een keer geprobeerd. Er is geen makkelijke oplossing voor. Ik heb het uiteindelijk maar aan de client kant opgelost.

Hey, I came here to be drugged, electrocuted and probed, not insulted.


Verwijderd

Topicstarter
Haploid schreef op zaterdag 06 augustus 2005 @ 16:28:
Random records kiezen uit een set is niet iets dat wordt ondersteund door welke database engine dan ook. Dat kun je tot op zekere hoogte zelf in elkaar knutselen; ik heb het zelf ook al een keer geprobeerd. Er is geen makkelijke oplossing voor. Ik heb het uiteindelijk maar aan de client kant opgelost.
Random records selecteren kan wel hoor:
code:
1
2
3
SELECT TOP 10 kolom
FROM tabel
ORDER BY newid()


zo krijg je iedere keer 10 random records, waarbij je de 10 natuurlijk kunt veranderen in 1 bijvoorbeeld :).

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
@Haploid: In MySQL kan het ook:
SQL:
1
SELECT * FROM tabel ORDER BY RAND() LIMIT 10

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Maargoed, hier is mijn probleem nog niet mee opgelost. Zo moeilijk kan het toch niet zijn.....