CompusaMedlem sedan jan. 20023 327 inlägg 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 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 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 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.