2011-01-31 56 views
0

我有这个疑问3表连接从一个表中的一个字段,并从另一个

SELECT cities.city, city_time.time_slot 
FROM cities, city_date, city_time 
WHERE city_time.city_date_id = city_date.city_id = city_date.city_id = cities.id 
AND city_time.city_date_id = '1' 

我试图让cities.city和city_time.time_slot到同一行的一个领域,他们通过city_date连接,

cities has- 
=========== 
id 
city, 

city_date has 
=========== 
id 
city_id (fk for city_table) 

city_time has 
============== 
city_date_id (FK for city_date table) 
time_slot 

一直在尝试几个ways-

SELECT cities.city, city_time.time_slot 
FROM (city_date LEFT JOIN cities ON city_time.city_date_id = city_date.city_id) 
LEFT JOIN city_date ON city_time.city_date_id = city_date.city_id 
WHERE city_time.city_date_id = '1' 

我只是想从城市表的城市字段链接到city_time表中的time_slot字段。甚至不需要左连接,但我想我会包括它来帮助你理解我的想法。

+0

你可以在“代码”块中格式化你的SQL代码吗?这会使阅读更容易。 – 2011-01-31 19:16:35

回答

0

从你的其他问题来看,这看起来就是你以后的样子。
请使用更短的名称(希望仍然有意义)作为别名。

SELECT c.city, t.time_slot 
FROM cities c 
LEFT JOIN city_date d on d.city_id = c.id 
LEFT JOIN city_time t on t.city_date_id = d.city_id AND t.city_date_id = '1' 
1
select c.city, ct.time_slot 
    from cities c 
     inner join city_date cd 
      on c.id = cd.city_id 
     inner join city_time ct 
      on cd.id = ct.city_date_id 
    where ct.city_date_id = 1 
+0

加1用于摆脱那种可怕的隐式连接语法! – HLGEM 2011-01-31 19:25:30

0

应该有两个表共同的东西,这样就可以进行比较,并有你想打印什么..像添加类似城市标识和城市的时间ID具有相同的记录。

相关问题