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

SQL wil Query niet uitvoeren

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

  • F-Tim
  • Registratie: November 2003
  • Laatst online: 28-11 22:48
Deze tweaker heeft een hip probleem met SQL Server Management Studio Express en ASP.Net 2.0....
het probleem is als volgt:

Ik heb in SQL Server MSE een Database aangemaakt, met daarin 3 tabellen;
In tabel A staan namen, elke rij heeft een eigen unieke ID
in tabel B staan opleidingen, elke rij heeft wederom een eigen unieke ID
in tabel C staat welke persoonsID (de unieke ID van tabel A dus) gekoppeld is aan welke opleidingsID (de unieke ID van tabel B ).

Voorbeeldgegevens:
Tabel A:
1 Hans
2 Piet
3 Jeroen

Tabel B:
1 Elektrotechniek
2 Verpleegkunde
3 Toerisme

Tabel C:
1 1 3 (Unieke ID, PersoonsID, OpleidingsID, in dit geval doet Hans dus Toerisme)
1 1 2 (Maar, Hans mag ook Verpleegkunde doen!)
1 2 1 (En hier doet Piet dus Elektrotechniek...)

In SQL Server, en ook in ASP wil ik de volgende Query uitvoeren:
SELECT Naam
FROM TabelB
WHERE TabelB.ID = TabelC.OpleidingsID
AND TabelC.PersoonsID = 1


Wat ik dus zou moeten krijgen is een lijstje van alle opleidingen waar Hans aan meedoet; dus Toerisme en Verpleegkunde. In plaats daarvan gaat hij in ASP gewoon naar het Catch gedeelte van de try/catch constructie, en krijg ik in SQL Server de melding:
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "TabelC.OpleidingsID" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "TabelC.PersoonsID" could not be bound.


Wie kan me uitleggen waarom zo een simpele query niet gewoon wil werken?
Ik weet overigens dat de Connectie wél gewoon goed is, want als ik een andere query uitvoer werkt het wel! (Overigens wel een 1-tabels query).

Heb ook al geprobeerd te stoeien met Inner Join, maar ook dit mocht niet baten :'(

Wanna play?


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15:39

Janoz

Moderator Devschuur®

!litemod

Omdat je de tabellen die je in je query gebruikt niet allemaal in je from clausule opgenomen hebt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
Ik ben niet thuis in SQL server maar mijn common SQL sense zegt dat je maar van 1 table (namelijk TableB ) selecteert.

  • The Van
  • Registratie: Maart 2006
  • Laatst online: 09-02-2023
SELECT Naam
FROM TableA,TabelB, TableC
WHERE TabelB.ID = TabelC.OpleidingsID
AND TabelC.PersoonsID = 1

Of iets dergelijks - je moet de tabellen joinen (en misschien ook een alias op regel 1, als naam
ook in TableB vorkomt: select TableA.naam

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Toen je Waar hoort mijn topic? doorlas, begreep je niet dat SQL query vragen eigenlijk in Programming horen?

tikkie over de schutting :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Waar staat het eerste getal voor bij tabelC? Als dat een unique id voor die tabel is dan klopt je uitleg niet helemaal. Want je kan natuurlijk geen unique id's meerdere keren toestaan.
Verder kun je proberen om de veldnaam ID tussen blocks te zetten : [ID] in access geeft dat bij mij nog wel eens problemen, weet alleen niet of SQLexpr dat ook heeft...

Een echte held in sql ben ik ook niet, dus hoop op nog een andere reactie. Succes ermee.

Edit: ik zie dat de moderator al wat had verteld, die reply had ik niet gezien, me screen was niet gerefreshed... O+

[ Voor 11% gewijzigd door Verwijderd op 22-10-2007 15:56 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je moet idd joinen zoals hierboven gezegd, het is echter netter om dat niet in de FROM en WHERE clause te doen maar in een JOIN clause
SQL:
1
2
3
4
5
SELECT b.Naam
FROM TabelB b
INNER JOIN TabelC c
ON b.ID = c.OpleidingsID
WHERE c.PersoonsID = 1

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:44
Tja, dit is echt wel basiskennis SQL hoor. Pak er even een tutorial bij, of de Books Online, en je kan direct zien hoe je een query juist moet schrijven.

Ofwel maak je gebruik van de JOIN clause, waarin je de nodige tabel specifieert, ofwel neem je de tabel die je naast TabelA nodig hebt, ook op in je FROM clausule.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.