Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Access SQL] Parameter doorgeven in nested query

Pagina: 1
Acties:

  • Knakker
  • Registratie: April 2000
  • Laatst online: 09:00
Ik loop me al uren rot te zoeken, maar kom er niet uit. Hoop dat hier mensen zijn die me kunnen helpen :)

Situatie: Ik heb een tabel tenants met daarin: klant - huurder - huurbedrag. Ik wil per klant de som van het huurbedrag van de vijf grootste huurders.

Ik heb een geparametriseerde query calc_top5rent gemaakt die dit kan uitrekenen voor één klant:

code:
1
2
3
4
5
PARAMETERS [ClientID] INT; 
SELECT SUM(rent) As Top5rent FROM 
     (SELECT TOP 5 client, rent FROM 
          (SELECT client, rent FROM tenants ORDER BY client, rent DESC) 
     WHERE client = [ClientID]);


Als ik deze uitvoer krijg ik netjes een invulbox waar ik ClientID in kan typen.

Nu wil ik een query uitvoeren die voor elke unieke klant in de tabel tenants het top 5 huurderbedrag voor mij uitrekent, dus iets in de trant van

code:
1
SELECT DISTINCT client, (SELECT Top5rent FROM ??) FROM tenants


Wat moet ik bij ?? invullen zodat de client uit het eerste gedeelte als parameter aan mijn geparametriseerde query wordt doorgegeven? Alvast bedankt _/-\o_

Geef mij maar een Warsteiner.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

SQL:
1
2
3
4
SELECT tenants.klant, Sum(tenants.huur) AS SomVanhuur
FROM tenants
WHERE tenants.Id In (select top 5 id from tenants as T where T.klant = tenants.klant order by huur desc)))
GROUP BY tenants.klant;


zoiets dergelijks. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Knakker
  • Registratie: April 2000
  • Laatst online: 09:00
Nooit bij stil gestaan dat je dat zo'n nested query ook in de where clause kon toepassen! Zo op het eerste gezicht is het correct. Hulde! _O_

Geef mij maar een Warsteiner.


  • Knakker
  • Registratie: April 2000
  • Laatst online: 09:00
Even in navolging op het bovenstaande: mijn tabel tenants is geen tabel maar een query die voortkomt uit meerdere tabellen. Deze heeft géén kolom met een identifier zoals in het bovenstaande voorbeeld (echt alleen klant - huurder - huurbedrag, geen van de drie uniek).

Hoe kan ik in mijn select statement welke de output van tenants genereert een kolom toevoegen die gewoon optelt van 1 tot x (met x het aantal rijen) dat als surrogaat ID kan functioneren? Ik bedoel dus zoiets als ROWNUM in Oracle of IDENTITY() in SQL server.

Alvast bedankt!

[ Voor 9% gewijzigd door Knakker op 29-10-2008 13:33 ]

Geef mij maar een Warsteiner.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Kun je dan je query niet baseren op de oorspronkelijke tabellen?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland