Avatar billede jkampmann Nybegynder
27. juli 2008 - 12:37 Der er 3 kommentarer

Inner join problem

Kan nogle fortælle mig, hvorfor den siger "Incorrect syntax near the keyword 'WHERE'." i denne query?

UNION SELECT
    1,2,3,4,4,6,7,8,t2.money,10,11
FROM
    mail
AS
    t1
INNER JOIN
    users
AS
    t2
WHERE t2.userid = 162681

På forhånd tak.
Avatar billede kjulius Novice
27. juli 2008 - 21:42 #1
Når du laver en inner join skal du specificere et join kriterie (ON t1.xx = t2.yy). Det mangler...
Avatar billede jkampmann Nybegynder
27. juli 2008 - 23:28 #2
Okay, men hvorfor skal man det? Hvad hvis jeg bare skal hente ét specifikt felt fra t2? Hvorfor skal jeg så sige den skal finde med det samme ID?

Jeg ønsker somsagt egentligt bare sådan noget her (bare flottere skrevet):

UNION SELECT 1,2,3,4,5,6,7,8,9,10,11 FROM mail
felt 9 skal så erstattes med "money" fra user-tabellen.

UNION SELECT 1,2,3,4,5,6,7,8,(SELECT money FROM users WHERE userid = 9999) AS 9?,10,11 FROM mail

Hvordan gør jeg det?
Avatar billede kjulius Novice
28. juli 2008 - 23:41 #3
Jeg ved ikke helt hvorfor du starter med en union (men det betyder vel, at du kun viser den sidste del af din forespørgsel?

Det lyder som om du bør bruge en CROSS JOIN i stedet, altså:

SELECT 1,2,3,4,4,6,7,8,t2.money,10,11
FROM mail AS t1
CROSS JOIN users AS t2
WHERE t2.userid = 162681

En mere "gammeldags" måde at skrive det på er ved simpelthen at adskille tabellerne med et komma:

SELECT 1,2,3,4,4,6,7,8,t2.money,10,11
FROM mail AS t1, users AS t2
WHERE t2.userid = 162681

Forudsætningen er naturligvis, at din afgrænsning på t2.userid bevirker, at der kun bliver udvalgt én række. For en CROSS JOIN (som giver et såkaldt cartesian product) returnere alle valgte rækker fra t1 for hver valgt række i t2. Hvis der derfor bliver valgt 2 rækker fra t1 og 4 rækker fra t2, bliver der returneret 8 rækker (produktet af antallet af valgte rækker fra de to tabeller).
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
Computerworld tilbyder specialiserede kurser i database-management

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



IT-JOB