Avatar billede Slettet bruger
06. januar 2006 - 13:53 Der er 14 kommentarer og
1 løsning

Join expression not supported

Hej alle,

Jeg kan ikke forstå, dette ikke virker. fejlen er 'Join expression not supported' og kommer i forbindelse med '[TC_list].[TC_id] = [capability].[tc_id] AND [TC].[band_id] = [capability].[band_id]'

SELECT ... FROM
((((((([project]
INNER JOIN [request] ON [project].[id] = [request].[project_id])
INNER JOIN [tom_request] ON [request].[id] = [tom_request].[request_id])
INNER JOIN [round] ON [tom_request].[id] = [round].[tom_request_id])
INNER JOIN [TC_list] ON [round].[id] = [TC_list].[round_id])
INNER JOIN [Band] ON [TC_list].[Band_id] = [band].[id])
INNER JOIN [TC] ON [TC_list].[TC_id] = [TC].[id]) LEFT JOIN [capability] ON ([TC_list].[TC_id] = [capability].[tc_id] AND [TC].[band_id] = [capability].[band_id]))
INNER JOIN [singlesystem] ON [capability].[system_id] = [singlesystem].[id]
...

Fjerner jeg de sidste 2 joins, virker alt som det skal.

SELECT ... FROM
((((([project]
INNER JOIN [request] ON [project].[id] = [request].[project_id])
INNER JOIN [tom_request] ON [request].[id] = [tom_request].[request_id])
INNER JOIN [round] ON [tom_request].[id] = [round].[tom_request_id])
INNER JOIN [TC_list] ON [round].[id] = [TC_list].[round_id])
INNER JOIN [Band] ON [TC_list].[Band_id] = [band].[id]
...

Det har ikke noget med at jeg bruger outer join, for jeg har prøvet at lave det til inner - Tak.

Vh Mathias.
Avatar billede sjap Praktikant
06. januar 2006 - 14:03 #1
Blot et skud: Skyldes det de to pareteser efter [TC].[band_id] = [capability].[band_id]))
Måske skal der kun være en?
Avatar billede Slettet bruger
06. januar 2006 - 15:15 #2
Nej.. den ene omkrandser ON statementet.

Vh Mathias.
Avatar billede erikjacobsen Ekspert
06. januar 2006 - 15:18 #3
Er typerne for felterne du sammenligner helt ens?
Avatar billede Slettet bruger
06. januar 2006 - 15:24 #4
Ja. typerne er ens.
Avatar billede erikjacobsen Ekspert
06. januar 2006 - 15:40 #5
Ok. Jeg ved ikke om det passer, men
http://podgoretsky.com/ftp/Docs/Basic/Database%20Developers%20Guide%20with%20Visual%20Basic%204/ddg05.htm
skriver at der er grænser for hvor kompleks en join der kan klares af Access.
Halvvejs nede på siden, led efter: Join expression not supported
Avatar billede terry Ekspert
07. januar 2006 - 10:47 #6
Access does have its limitations with JOINS but the aaboce SQL deosnt seem that complex, althoug hwe cant see it all.
You could try putting some of the SQL in another query and then use that in your original query
Avatar billede Slettet bruger
08. januar 2006 - 09:43 #7
Ville gætte på at det er din LEFT JOIN der sammen med de andre får det til at gå ged.

Noget helt andet, IMHO så er du oppe i en 8 vejs join og det er på ingen måder en god ide. Du skulle nok prøve om du ikke kan simplificerer din datamodel eller eventuelt lave nogle Views (forspørgsel tror jeg det hedder i Access) så er det muligt at du kan få køre din SQL. Men hvis det er noget SQL der skal køre mange gange så kig på din datamodel.
Avatar billede Slettet bruger
08. januar 2006 - 11:45 #8
Hej.

Kryptos>> Det er desværre ikke muligt at simplificere datamodellen medmindre jeg skal lave en virkelig dårlig databasestruktur, hvor informationer skal opdateres i flere rows og statestikudtræk bliver dødens pølse.. Jeg skal derimod have kædet 5-10 flere tabeller på, når jeg når så langt.

Jeg har fundet frem til, at det er den sidste INNER JOIN, der giver fejl. Jeg har først en masse INNER JOINs og dernæst en LEFT INNER JOIN.

[project] INNER JOIN [request]
INNER JOIN [tom_request]
INNER JOIN [round]
INNER JOIN [TC_list]
INNER JOIN [Band]
INNER JOIN [TC]
LEFT JOIN ([capability] INNER JOIN [singlesystem])

Hvis jeg fjerner INNER JOIN [singlesystem], virker det.

Jeg kan se, jeg har lavet en fejl mht tabelnavne i et ON statement og det er rettet her:
...
INNER JOIN [TC] ON [TC_list].[TC_id] = [TC].[id])
LEFT JOIN [capability] ON ([TC_list].[TC_id] = [capability].[tc_id] AND [TC_list].[band_id] = [capability].[band_id]))
INNER JOIN [singlesystem] ON [capability].[system_id] = [singlesystem].[id]
...

Jeg kunne forestille mig, at der skal ændres lidt på nogle paranteser:

...
INNER JOIN [TC] ON [TC_list].[TC_id] = [TC].[id])
LEFT JOIN ([capability] INNER JOIN [singlesystem] ON [capability].[system_id] = [singlesystem].[id]) ON ([TC_list].[TC_id] = [capability].[tc_id] AND [TC_list].[band_id] = [capability].[band_id])
...

Terry>> jeg tror godt jeg kan få det til at virke med din metode, hvor jeg opretter en query, men jeg vil foretrække, hvis jeg kan få det til at virke på denne måde.

Vh Mathias.
Avatar billede Slettet bruger
08. januar 2006 - 11:47 #9
Jeg håber i forstår hvad jeg mener med 'LEFT INNER JOIN': det skulle være 'INNER JOIN i LEFT JOIN'
Avatar billede terry Ekspert
08. januar 2006 - 11:51 #10
are you using the query builder in Access?
Avatar billede terry Ekspert
08. januar 2006 - 11:51 #11
a LEFT join is ALWAYS and OUTER join
Avatar billede Slettet bruger
09. januar 2006 - 15:30 #12
Hey.. hav venligst tålmodighed med mig i denne tråd.. jeg arbejder på det og vender tilbage lige pludselig!

Vh Mathias.
Avatar billede Slettet bruger
09. januar 2006 - 17:11 #13
Arggghhh.. hvorfor smider eksperten hele tiden ens indlæg væk?

Nåh - prøver igen..

Jeg får følgende fejl, når jeg prøver at lave det med query editor:
<http://balder.users.whitehat.dk/query.JPG>

Jeg går ud fra, jeg først skal selecte alt andet en capability og singlesystem (gør jeg i [tmp_tbl]):

(SELECT ... FROM ...) AS [tmp_tbl] LEFT JOIN [capability] INNER JOIN ([singlesystem] ON [capability].[system_id] = [singlesystem].[id]) ON [capability].[TC_id] = [tmp_tbl].[TC_id]

Problemet er bare, at jeg så skal liste alle felterne 2 gange. først i [tmp_tbl] og så for queryen. Hvis det er muligt kun at skulle liste felterne en gang, er det noget mere overskueligt at rette til senere.

Hvis i har nogen forslag til en bedre løsning, ville det være super!

Vh Mathias.
Avatar billede Slettet bruger
09. januar 2006 - 17:12 #14
Hvis linket ikke virker, er det fordi jeg har puttet <> omkring og > skal slettes.
Avatar billede Slettet bruger
30. januar 2007 - 11:59 #15
Jeg har ikke fået det til at virke, så har bibeholdt en fladere, mindre hensigtsmæssig struktur - desværre..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester