[SQL server] Lastig Select probleem

Pagina: 1
Acties:

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 30-11 10:16
Ik heb een database met oa de volgende tabellen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Rij  RijID
        RijNaam

Rek  RekID
        RijID
        RekNaam

Vak  VakID
        RekID
        VakNaam
        VakHoogte

Artikel ArtikelID
        VakID
        ArtikelNaam

Nu wil ik zoeken naar één of meerdere rekken die een X aantal lege vakken heeft met vakhoogte Y.
In de table Vak staat geen informatie over of het vak wel of niet een artikel bezit.

Nu ben ik met SELECT aan de gang gegaan, maar volgens mij is het met een enkele SELECT niet mogelijk om die rekken te selecteren die aan die voorwaarde te voldoen.

Ik ben al een tijdje aan het puzzelen gegaan, maar ik ben bang dat ik een stuk groter sql script moet schrijven als één SELECT statement.

Nu is dat op zich geen probleem, ik kan uiteindelijk wel tot het gewenste resultaat komen, maar ik vraag me af of het toch niet mogelijk is met één SELECT statement.

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 10:34

Dido

heforshe

Iets als dit?
code:
1
2
3
4
5
6
select v.rekid, count(*)
from vak v left outer join artikel a on v.vakid = a.vakid
where isnull(a.vakid)
and v.vakhoogte = Y
group by v.rekid
having count(*) => X

Wat betekent mijn avatar?


  • Mike78
  • Registratie: September 2000
  • Laatst online: 01-12 20:59

Mike78

Always

SQL:
1
2
3
4
5
6
select r.rekid, coun(*)
from vak v 
inner join rek r on r.rekid = v.rekid
where v.vakhoogte= 'Y' 
and v.vakid not in (select vakid from artikel)
having coun(*) > X


Zo moet je volgens mij al een end komen

[ Voor 7% gewijzigd door Mike78 op 28-03-2007 20:32 ]

24 uur per dag, 24 biertjes in een krat. Toeval?


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 10:34

Dido

heforshe

Mike78: je mist een GROUP BY ;)
Verder werkt het met een subquery ook, inderdaad. Het kan de moeite zijn te proberen wat sneller is.

Wat betekent mijn avatar?


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 30-11 10:16
Hier kom ik er nu achter dat mijn kennis van SQL nog wat aan de lage kant is...

Ik heb mike78 zijn voorbeeld genomen, met de group by, en nu krijg ik de gewenste resultaten :)

O ja, ik heb ook nog een distinct op r.rekid gezet...

[ Voor 13% gewijzigd door Swerfer op 28-03-2007 20:41 ]

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 10:34

Dido

heforshe

Swerfer schreef op woensdag 28 maart 2007 @ 20:39:
Hier kom ik er nu achter dat mijn kennis van SQL nog wat aan de lage kant is...

Ik heb mike78 zijn voorbeeld genomen, met de group by, en nu krijg ik de gewenste resultaten :)

O ja, ik heb ook nog een distinct op r.rekid gezet...
Die distinct is volslagen onzin als je die group by gebruikt :?

Wat betekent mijn avatar?

Pagina: 1