anoniem Geplaatst: 23 augustus 2004 Delen Geplaatst: 23 augustus 2004 Hallo allemaal, Ik heb een Access 97 databeesje met drie tabellen Apps, Links en UserSettings Iemand heeft deze query voor mij gemaakt (ik denk in MS SQL of MySQL) om een bepaalde combinatie te maken van deze drie tabellen. Nu gaat het mij niet om de resultaten, maar Access geeft een foutmelding, "Syntax error in From clause", en selecteert vervolgens het 2e "SELECT". Ik wil deze persoon niet teveel lastig vallen. Is er iemand die meteen ziet wat er mis is met deze query? Bij hem werkt het dus de veldnamen en tabelnamen zijn goed. query: SELECT * FROM Apps LEFT OUTER JOIN (SELECT * FROM UserSettings WHERE UserNaam = 'Rob') DERIVEDTBL ON Apps.ID = DERIVEDTBL.AppID WHERE (Apps.ID IN (SELECT AppID FROM Links WHERE UserNaam = 'Rob' OR GroupNaam = 'Administrators')) bedankt, Rob Quote Link naar reactie
anoniem Geplaatst: 23 augustus 2004 Auteur Delen Geplaatst: 23 augustus 2004 Als het bij hem werkt is er niets mis met de query. Lijkt me logisch. Quote Link naar reactie
anoniem Geplaatst: 23 augustus 2004 Auteur Delen Geplaatst: 23 augustus 2004 Niet alle SQL implementaties zijn gelijk. Sommige bevatten functies die niet in andere SQL producten voorkomen. Dat is hier ook het geval. De [b:6eb2ab92d3]DERIVEDTBL[/b:6eb2ab92d3] constructie is hoogstwaarschijnlijk de boosdoener. Probeer het volgende is: [code:1:6eb2ab92d3]SELECT * FROM Apps LEFT OUTER JOIN UserSettings ON Apps.ID = UserSettings.AppID WHERE (Apps.ID IN (SELECT AppID FROM Links WHERE UserNaam = 'Rob' OR GroupNaam = 'Administrators')) [/code:1:6eb2ab92d3] Uiteraard moet je nu de WHERE clausule nog aanpassen omdat nu alle rijen uit UserSettings geselecteerd worden en niet alleen die met UserNaam = 'Rob'. Groet, Butch Quote Link naar reactie
anoniem Geplaatst: 23 augustus 2004 Auteur Delen Geplaatst: 23 augustus 2004 Ja, op deze manier geen foutmelding. Alleen heb ik inderdaad niet het resultaat wat ik zoek. DERIVEDTBL kan dan niet in Acces(97) gebruikt worden zeker? Rob Quote Link naar reactie
anoniem Geplaatst: 23 augustus 2004 Auteur Delen Geplaatst: 23 augustus 2004 DERIVEDTBL lijkt mij een tijdelijke naam die gegeven wordt aan de subselect in je query en die heb je ook nodig binnen de WHERE clausule. Het lijkt mij overigens dat deze query eenvoudiger moet kunnen (vooral ook omdat ik twee keer een "Where username='rob' zie) en dus nog enig denkwerk nodig heeft. Quote Link naar reactie
anoniem Geplaatst: 23 augustus 2004 Auteur Delen Geplaatst: 23 augustus 2004 Het volgende zou m.i. het gewenste resultaat moeten geven. Als dat niet zo is dan zit er denk ik niet veel anders op dan degene die de select voor jou bedacht heeft toch maar even lastig te vallen. [code:1:dc25fb2fae]SELECT * FROM Apps LEFT OUTER JOIN UserSettings ON Apps.ID = UserSettings.AppID WHERE (Apps.ID IN (SELECT AppID FROM Links WHERE UserNaam = 'Rob' OR GroupNaam = 'Administrators') AND UserSettings.UserNaam = 'Rob') [/code:1:dc25fb2fae] Succes! Butch Quote Link naar reactie
anoniem Geplaatst: 23 augustus 2004 Auteur Delen Geplaatst: 23 augustus 2004 [quote:60fd57e663="Rob V"] Ik heb een Access 97 databeesje met drie tabellen Apps, Links en UserSettings Iemand heeft deze query voor mij gemaakt (ik denk in MS SQL of MySQL) om een bepaalde combinatie te maken van deze drie tabellen. Nu gaat het mij niet om de resultaten, maar Access geeft een foutmelding, [/quote:60fd57e663] Hoezo gaat het je niet om de resultaten? [quote:60fd57e663="Rob V"] "Syntax error in From clause", en selecteert vervolgens het 2e "SELECT". Ik wil deze persoon niet teveel lastig vallen. [/quote:60fd57e663] En nu mogen wij het oplossen? [quote:60fd57e663="Rob V"] Is er iemand die meteen ziet wat er mis is met deze query? Bij hem werkt het dus de veldnamen en tabelnamen zijn goed. [/quote:60fd57e663] Hmm, Dat hoeft op zich niets te betekenen. [quote:60fd57e663="Rob V"] query:[code:1:60fd57e663] SELECT * FROM Apps LEFT OUTER JOIN ( SELECT * FROM UserSettings WHERE UserNaam = 'Rob' ) DERIVEDTBL ON Apps.ID = DERIVEDTBL.AppID WHERE (Apps.ID IN ( SELECT AppID FROM Links WHERE (UserNaam = 'Rob') OR (GroupNaam = 'Administrators') ) )[/code:1:60fd57e663] [/quote:60fd57e663] Die query klopt volgens mij sowieso niet. Je doet een Left join op de tabel UserSettings, maar vervolgens doe je niets met deze gegevens. Het enige resultaat dat dit kan hebben is dat records uit de Apps-tabel meerdere keren in het resultaat kunnen voorkomen. Misschien is het handig als je de (simpele) tabeldefinities geeft en vertelt wat het resultaat zou moeten zijn. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen