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
Databaser & SQLur Databashanterare & SQL
4 svar · 389 visningar · startad av Compusa
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?
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
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...
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.
Tack :)