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

[T-SQL] join, union, subquery of via een temptable?

Pagina: 1
Acties:
  • 319 views sinds 30-01-2008
  • Reageer

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

Topicstarter
Het betreft hier een SQL Server 2005 database vraag.
Ik ben nu al een tijdje mijn hoofd aan het pijnigen over een query die ik moet maken. Hij lijkt mij zo simpel, maar ik krijg het niet voor elkaar. Waarschijnlijk is het weer zo een moment dat je een black spot hebt, waar je maar niet omheen komt. Wellicht weten jullie raad.

2 tabellen:

Personeel
  • Naam nvarchar(50)
  • Afdeling nvarchar(10)
  • Trigram nvarchar(4)
  • Toestel nvarchar(50)
Afdelingen
  • AFDKORT nvarchar(10) 1 op veel ==> Afdeling in tabel Personeel
  • NAAMCHEF nvarchar(4) 1 op veel ==> Trigram in tabel Personeel
De bedoeling is dat de volgende velden door de query opgeleverd worden:
  • Naam
  • Afdeling
  • Trigram
  • Toestel
  • Naam chef afdeling (is af te leiden uit Personeel.Afdeling in combinatie met Afdelingen.AFDKORT in combinatie met Afdelingen.NAAMCHEF die weer gevonden kan worden in Personeel.Naam, staat dus ook in de Personeel tabel)
code:
1
2
3
4
5
6
7
8
SELECT  P.Naam
,   P.Afdeling
,   P.Kamernummer
,   P.Trigram
,   A.NAAMCHEF
FROM    Afdelingen A
INNER JOIN  Personeel P
ON  A.AFDKORT = P.Afdeling


Hiermee heb ik dus bijna alle gegevens, alleen nog niet de volledige naam van de chef, maar alleen de afkorting. Ik krijg met geen mogelijkheid de afkorting omgezet in de volledige naam uit de Personeel tabel. Ik ben bezig geweest met INNER JOIN's, tijdelijke tabellen en sub query's maar heb het nog niet voor elkaar gekregen. Steeds komt er 1 probleem naar voren, dat als ik een sub query gebruik (waarschijnlijk doe ik het gewoon verkeerd) dat er meerdere resultaten terugkomen in de sub query en dat kan weer niet met betrekking tot het gewenste resultaat.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-11 22:54
Je zal nog een extra join nodig hebben op personeel vermoed ik.
Even snel en uit het blote hoofd:
code:
1
2
3
4
SELECT p.naam, p.afdeling, p.kamernummer, p.trigram, c.naam as chefnaam
FROM Personeel p
INNER JOIN Afdelingen a ON p.Afdeling = a.Afdkort
OUTER JOIN Personeel c ON a.naamchef = c.trigram

https://fgheysels.github.io/


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 26-11 17:32

Gé Brander

MS SQL Server

Topicstarter
Top, dat was hem inderdaad bijna, ik moest allen nog even LEFT toevoegen voor OUTER JOIN. Thanks!

code:
1
2
3
4
5
6
7
8
9
10
SELECT p.naam
    , p.afdeling
    , p.kamernummer
    , p.trigram
    , c.naam as chefnaam
FROM Personeel p
INNER JOIN Afdelingen a 
ON p.Afdeling = a.Afdkort
LEFT OUTER JOIN Personeel c 
ON a.naamchef = c.trigram

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!