Toon posts:

[MSSQL] meerdere JOINs in query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Al enige tijd ben ik bezig met meerdere JOIN's binnen een query. Maar de gegevens die ik terug krijgt, kloppen niet met wat er in het systeem staat. Ik denk dat ik iets over het hoofd zie. Ik hoop dat iemand me kan helpen.

De situatie is als volgt. Ik heb de volgende tabellen:
wf_assignment
id
project_id
description

wf_assignment_procedure
id
assignment_id
entity_id
description

vehicle
id
brand
type

Onderstaand de query tot nu toe:
SQL:
1
2
3
4
5
6
7
8
9
10
11
SELECT
  wfa.id, wfa.project_id, wfa.procedure_description, wfa.date_time
FROM
  wf_assignment as wfa
  INNER JOIN wf_assignment_procedure as wfap ON wfap.assignment_id = wfa.id
  INNER JOIN vehicle AS v ON v.id = wfap.entity_id
WHERE
  wfa.project_id = '1' AND
  (wfa.procedure_description = 'OBSERVATIE' AND v.brand = 'Mercedes')
GROUP BY wfa.id,wfa.date_time,wfa.project_id,wfa.procedure_description
ORDER BY wfa.date_time DESC


Het is dus de bedoeling dat ik een aantal records in de wf_assignment tabel terug krijgt met de onderstaande voorwaarde :
  • wf_assignment.project_id = 1
  • wf_assignment.procedure_description = 'OBSERVATIE'
  • vehicle.brand = 'Mercedes'
Hieronder volgt de relatie omschrijving:
wf_assignment_procedure.assignment_id is gekoppeld aan wf_assignment.id
vehicle.id is gekoppeld aan wf_assignment_procedure.entity_id

Ik gebruik MSDE2000

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

En wat gaat er dan verkeerd? :?

Die group by lijkt me trouwens ook redelijk overbodi, aangezien je verder geen aggregate function gebruikt.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ik krijg TE veel gegevens terug die niet overeenkomen met de voorwaardes die ik stel.

Verwijderd

Verwijderd schreef op maandag 24 juli 2006 @ 17:13:
Ik krijg TE veel gegevens terug die niet overeenkomen met de voorwaardes die ik stel.
Zou kunnen komen door de INNER JOINs.

[ Voor 5% gewijzigd door Verwijderd op 24-07-2006 23:04 ]


Verwijderd

Topicstarter
Hebben jullie een suggestie hoe dit probleem op te lossen?
Als er iets niet duidelijk is dan hoor ik het graag....

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Nou, een paar testgegevens die in de database kunnen staan, met daarbij behorende resultaten van die query van je zouden niet gek zijn. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Night-Reveller
  • Registratie: September 2000
  • Laatst online: 14-02 21:23
Verwijderd schreef op maandag 24 juli 2006 @ 17:04:

SQL:
1
2
3
WHERE
  wfa.project_id = '1' AND
  (wfa.procedure_description = 'OBSERVATIE' AND v.brand = 'Mercedes')
Even een domme vraag; waarom wil je project_id = '1' hebben en niet project_id=1. Je hebt een id veld serieus als char gemodelleerd?

En de haakjes maken trouwens ook niets uit, die kan je weglaten.

Verwijderd

Topicstarter
de haakjes hebben inderdaad geen nut.
en project_id is als een integer gemodelleerd, foutje in de query....

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

Die query is perfect voor het gegeven datamodel om de gevraagde data eruit te krijgen. Ergo als je er teveel data uit krijgt is je verwachtingspatroon fout of je database vervuild :)

Laat eens zien welke records je eruit krijgt die volgens jou er niet in zouden moeten zitten.

[ Voor 21% gewijzigd door curry684 op 25-07-2006 09:04 ]

Professionele website nodig?


Verwijderd

Topicstarter
De query is op 1 ding na perfect. Er moest nog 1 voorwaarde worden toegevoegd......namelijk, om welk object type het gaat (voertuig/locatie/persoon/voorwerp/etc.) En nu werkt de query dus helemaal en krijg ik ook de records terug die ik verwacht...

Ik was aan het testen gegaan met een database met ongeveer 10000 records en dan is het lastig om je fout op te sporen. Daarom is de database opgeschoond en ben ik opnieuw begonnen. Toen kwam ik dus achter deze fout.

In ieder geval bedankt voor de hulp allemaal!!!!!
Pagina: 1