webForumDet fria alternativet

Flera joins, varför fungerar det ej?

4 svar · 389 visningar · startad av Compusa

CompusaMedlem sedan jan. 20023 327 inlägg
#1

Hej!
Använder två inner joins men får inget resultat. Sitter med Firebird. Tar jag bort en av joinarna så fungerar det. Får inget syntax fel, så jag antar att jag kan behöva paranteser?

SELECT E.Fname, E.Lname FROM E
INNER JOIN P ON E.Nr = P.Nr
INNER JOIN S ON E.Nr = S.Nr
WHERE Nr = '123' AND Date = '2006-03-01'

Det fungerar om jag använder mig av två uttryck och gör en union, men ska det verkligen vara nödvändigt?

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Då du inte får något syntaxfel så finns det inget data som uppfyller villkoren.

kontrollera att varje tabell innehåller en post där nr = 123

CompusaMedlem sedan jan. 20023 327 inlägg
#3

Tack för ledtråden!
Lyckades därmed hitta problemet är att Nr och Date finns i tabellerna som joinas dvs P och S. Inte konstigt att det inte fungerar då ;)

Jag lyckades få till det med en union:

SELECT E.Fname,  E.Lname FROM E
INNER JOIN P ON E.Nr = P.Nr
WHERE Nr = '123' AND Date = '2006-03-01'
UNION
SELECT E.Fname,  E.Lname FROM E
INNER JOIN S ON E.Nr = S.Nr
WHERE Nr = '123' AND Date = '2006-03-01'

Går det att göra på något bättre sätt? Har förvisso en annan relation som jag skulle kunna utgå ifrån där värdena för Nr och Date finns, skulle sedan kunna joina de andra tabeller utifrån denna...

LarsGMedlem sedan dec. 200012 464 inlägg
#4
SELECT E.Fname,  E.Lname 
   FROM E
where nr in (
 select nr 
  from  P 
 where nr = 123
   and Date = '2006-03-01')
or nr in
  (SELECT nr
       from S 
    WHERE Nr = 123
       AND Date = '2006-03-01')

När jag tittar närmare på din första fråga så skall den ge fel eftersom du inte kvalificerar kolumnerna.

CompusaMedlem sedan jan. 20023 327 inlägg
#5

Tack :)

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)