webForumDet fria alternativet

Join on

1 svar · 266 visningar · startad av chha33

chha33Medlem sedan juli 20065 inlägg
#1

Hej igen.

Skrev ett inläg tidigare ikväll och nu har jag forskat lite till och har följande två SQl-satser varav den ena funkar och den andra inte. Min fråga är varför och hur ska jag göra för att få den andra att fungera?

Fungerar:
SELECT td_stugor.ID FROM td_stugor JOIN td_stugor_faciliteter ON td_stugor.ID=td_stugor_faciliteter.stugorID WHERE td_stugor_faciliteter.faciliteterID IN ( 3 ) GROUP BY td_stugor.ID HAVING COUNT(*) = 1

Fungerar ej:
SELECT td_stugor.ID FROM td_stugor , td_lan, td_kommuner JOIN td_stugor_faciliteter ON td_stugor.ID=td_stugor_faciliteter.stugorID WHERE td_stugor.kommunID=td_kommuner.ID AND td_kommuner.lansbok=td_lan.bokstav AND td_lan.ID=23 AND td_stugor_faciliteter.faciliteterID IN ( 3 ) GROUP BY td_stugor.ID HAVING COUNT(*) = 1

Felmeddelande
[MySQL][ODBC 3.51 Driver][mysqld-5.0.51a-log]Unknown column 'td_stugor.ID' in 'on clause'

D.v.s. när jag blandar in andra tabeller (td_lan, td_kommuner) så vill det sig inte.

Felmeddelandet får jag i ver. 5 men ej i ver.4 av MySQL.

Tack på förhand.
/Christer

LarsGMedlem sedan dec. 200012 464 inlägg
#2

De kolumner som anges i sökvillkoret efter ON måste finnas med i någon av de tabeller som ingår i join-klausulen

select td_stugor.ID 
  from td_stugor 
  join td_stugor_faciliteter on td_stugor.ID=td_stugor_faciliteter.stugorID 
  join td_kommuner on td_stugor.kommunID=td_kommuner.ID
  join td_lan on td_kommuner.lansbok=td_lan.bokstav
 where t_lan.ID=23 
   and td_stugor_faciliteter.faciliteterID in (3) 
 group by td_stugor.ID 
having count(*) = 1
127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)