[SQL] LEFT JOIN probleem

Pagina: 1
Acties:

  • Hugo
  • Registratie: Januari 2001
  • Laatst online: 24-05 14:04
Vanwege een mgratie van een Microsoft Acces Database naar MS SQL Server 2000. Nu ben ik geen SQL guru maar heb toch al heel wat voor elkaar gekregen. Echter krijg ik bij de volgende code steeds een foutmelding:

de code:

UPDATE _CUSTOMER_ left join [Tussentabel Customer] LEFT JOIN Units ON ([Tussentabel Customer].Afdeling = Units.UnitNaam) ON (_CUSTOMER_.[SEQUENCE] = [Tussentabel Customer].MagicServiceDesk) SET _CUSTOMER_.[_GROUP_] = [Tussentabel Customer].[_group_], _CUSTOMER_.CLIENT = [Tussentabel Customer].[gebruikersnaam], _CUSTOMER_.FNAME = [Tussentabel Customer].[voornaam], _CUSTOMER_.[NAME] = [Tussentabel Customer].[achternaam], _CUSTOMER_.BLDNG = [Units].[gebouw], _CUSTOMER_.OFFICE = [Tussentabel Customer].[kamernummer], _CUSTOMER_.[_EMAILID_] = [Tussentabel Customer].[emailadres], _CUSTOMER_.[USEDEPT:] = [Tussentabel Customer].[usedept], _CUSTOMER_.[USECOMPANY:] = [Tussentabel Customer].[usecompany], _CUSTOMER_.[CREATEDFROMSSD:] = [Tussentabel Customer].[atedfromssd], _CUSTOMER_.[DISPLAYCLIENTCOMMENTS:] = [Tussentabel Customer].[playclientcomments], _CUSTOMER_.[_INACTIVE_:] = [Tussentabel Customer].[_inactive_], _CUSTOMER_.SOORTDIENSTVERLENING = [Tussentabel Customer].[soortdienstverlening], _CUSTOMER_.FK_UNITS = [Units].[unitID], _CUSTOMER_.PHONE = [Tussentabel Customer].[telefoonnummer]

WHERE _customer_.[_GROUP_]=1001 AND _customer_.[SEQUENCE]>1100

De foutmelding:
Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'left'.


Ik weet dat het een heel lange code is en het 't lezen niet makkelijker opmaakt maar ik hoop dat iemand mij een stap verder kan helpen.

Het bekijken van tutorials/faq's op het internet heeft mij tot dusver nog niet geholpen maar uiteraard blijf ik ook daar zoeken.

TREQ Formula Rig || Fanatec CSL DD 8NM || MCLaren GT3 V2 || CSL Elite Pedals || 3x LG 27GL63T Ultragear || My F1 website The Paddock Crew


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Een UPDATE statement schrijf je zo:

code:
1
2
3
UPDATE tabelnaam
SET veld = waarde, veld1 = waarde, ...
WHERE ...

eventueel kan je ook een FROM clause opnemen, maar je moet wel weten dat je enkel de waardes kunt veranderen voor de velden van je tabel die direct na het UPDATE keyword komt:
code:
1
2
3
4
5
UPDATE tabelnaam
SET veld = waarde, ...
FROM anderetabel
LEFT JOIN nogeenanderetabel ON ...
WHERE  ....

https://fgheysels.github.io/


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 18:23

Dido

heforshe

Er klopt simpelweg geen hout van je syntax :?
Wel een update, maar uik kan geen set vinden, je eerste left join join niets, er staat twee keer ON achter elkaar, en toen heb ik het opgegeven :P
Is deze code gegenereerd, of heeft er iemand heel slordig ge c/p'd?

Wat betekent mijn avatar?


  • Hugo
  • Registratie: Januari 2001
  • Laatst online: 24-05 14:04
Dido schreef op 28 juni 2004 @ 16:22:
Er klopt simpelweg geen hout van je syntax :?
Wel een update, maar uik kan geen set vinden, je eerste left join join niets, er staat twee keer ON achter elkaar, en toen heb ik het opgegeven :P
Is deze code gegenereerd, of heeft er iemand heel slordig ge c/p'd?
Code heb ik gedeeltelijk aangepast van MS Acces. Gewoon gecopy / paste dus. Ben geen held in SQL dat geef ikmeteen toe.

TREQ Formula Rig || Fanatec CSL DD 8NM || MCLaren GT3 V2 || CSL Elite Pedals || 3x LG 27GL63T Ultragear || My F1 website The Paddock Crew


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Misschien kan je dan zowiezo beter eerst eens een SQL tutorial volgen?

ff 'sql tutorial' intikken bij Google levert je al heel wat resultaten op. Je zal er zowiezo verder mee komen dan lukraak wat copy / pasten en met trial en error een goeie query proberen te bakken.

https://fgheysels.github.io/


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 18:23

Dido

heforshe

WorkForce schreef op 28 juni 2004 @ 16:24:
Code heb ik gedeeltelijk aangepast van MS Acces. Gewoon gecopy / paste dus. Ben geen held in SQL dat geef ikmeteen toe.
Dan denk ik dat je iets voorzichtiger moet copy/pasten ;)

Het kan ook helpen om je SQL eerst in notepad netjes uitgelijnd neer te zetten. Als je dat met deze code doet zie je al dat er niets van klopt:
UPDATE
(_CUSTOMER_
left join
[Tussentabel Customer] ON wat?)
LEFT JOIN
Units ON ([Tussentabel Customer].Afdeling = Units.UnitNaam)
En hier wil je nog wat joinen :? ON (_CUSTOMER_.[SEQUENCE] = [Tussentabel Customer].MagicServiceDesk)

Ah, en daar staat je set :)
SET _CUSTOMER_.[_GROUP_] = [Tussentabel Customer].[_group_], _CUSTOMER_.CLIENT = [Tussentabel Customer].[gebruikersnaam], _CUSTOMER_.FNAME = [Tussentabel Customer].[voornaam], _CUSTOMER_.[NAME] = [Tussentabel Customer......

Je zit iig met een dubbele "ON", dat vindt-ie alvast niet lekekr :P

edit:

Een wilde gooi: zet het vette deel eens op d plaats van de X*X?

UPDATE _CUSTOMER_ left join [Tussentabel Customer] X*X LEFT JOIN Units ON ([Tussentabel Customer].Afdeling = Units.UnitNaam) ON (_CUSTOMER_.[SEQUENCE] = [Tussentabel Customer].MagicServiceDesk) SET _CUSTOMER_.[_GROUP_] = [Tussentabel Customer].[_group_], _CUSTOMER_.CLIENT = [Tussentabel Customer].[gebruikersnaam], _CUSTOMER_.FNAME = [Tussentabel Customer].[voornaam], _CUSTOMER_.[NAME] = [Tussentabel Customer].[achternaam], _CUSTOMER_.BLDNG = [Units].[gebouw], _CUSTOMER_.OFFICE = [Tussentabel Customer].[kamernummer], _CUSTOMER_.[_EMAILID_] = [Tussentabel Customer].[emailadres], _CUSTOMER_.[USEDEPT:] = [Tussentabel Customer].[usedept], _CUSTOMER_.[USECOMPANY:] = [Tussentabel Customer].[usecompany], _CUSTOMER_.[CREATEDFROMSSD:] = [Tussentabel Customer].[atedfromssd], _CUSTOMER_.[DISPLAYCLIENTCOMMENTS:] = [Tussentabel Customer].[playclientcomments], _CUSTOMER_.[_INACTIVE_:] = [Tussentabel Customer].[_inactive_], _CUSTOMER_.SOORTDIENSTVERLENING = [Tussentabel Customer].[soortdienstverlening], _CUSTOMER_.FK_UNITS = [Units].[unitID], _CUSTOMER_.PHONE = [Tussentabel Customer].[telefoonnummer]

WHERE _customer_.[_GROUP_]=1001 AND _customer_.[SEQUENCE]>1100

[ Voor 39% gewijzigd door Dido op 28-06-2004 16:33 ]

Wat betekent mijn avatar?


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:55

Creepy

Tactical Espionage Splatterer

Dido schreef op 28 juni 2004 @ 16:30:
[...]
.. een heel verhaal terwijl hij vergeet dat een join in een update niet kan tenzij je een from in je update hebt staan ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Hugo
  • Registratie: Januari 2001
  • Laatst online: 24-05 14:04
Bedankt! Ik ben al weer wat verder. Het script werkt nu zonder de joins. Heb net ook nog even een SQL Server boek gehaald bij Donner dus dat word veel lezen.

TREQ Formula Rig || Fanatec CSL DD 8NM || MCLaren GT3 V2 || CSL Elite Pedals || 3x LG 27GL63T Ultragear || My F1 website The Paddock Crew


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
WorkForce schreef op 28 juni 2004 @ 17:00:
Bedankt! Ik ben al weer wat verder. Het script werkt nu zonder de joins. Heb net ook nog even een SQL Server boek gehaald bij Donner dus dat word veel lezen.
Hmm, is het een boek dat vooral Sql Server behandeld, of gaat het ook in op de basics van de taal SQL.
Ik denk dat je aan zo'n boek (dat SQL als taal behandeld) ook veel zal hebben.

Ik denk dat dat boek dat je gekocht hebt, waarschijnlijk veel over stored procedures, triggers, UDF's, view's etc... zal handelen, wat uiteraard ook zeer interessant is. :P

https://fgheysels.github.io/

Pagina: 1