2011-03-18 104 views
0

我有以下表格。MySQL加入查询问题

PHONES 
- id 
- name 
- colour 
- size 

STOCK 
- store_id 
- phone_id 
- instock 

STORES 
- id 
- name 

LINKS 
- store_id 
- phone_id 
- url 

我想从链接Select名称,颜色,从PHONES大小,从STOCK使用inStock,从商店的名称和URL WHERE stock.phone_id = phones.id = links.phone_id AND stock.store_id =链接。 store_id AND stores.id = stock.store_id。

我想出来,phone.name,phone.colour,phone.size,stock.instock,stores.name,links.url。

这是我目前的查询。我没有获得与该商店和电话ID相关的特定链接。

SELECT DISTINCT(s.phone_id), st.name, st.logo_url, l.url, s.instock, s.datetime, p.model, p.colour, p.size 
FROM stock AS s, stores AS st 
INNER JOIN links AS l, phones AS p 
WHERE s.phone_id = p.id 
AND s.phone_id = l.phone_id 
AND s.store_id = l.store_id 
AND s.store_id IN ('3','4','5','6','8') 
AND s.phone_id = '5' 
ORDER BY datetime 
DESC LIMIT 5 

回答

3
SELECT p.name, p.colour, p.size, st.instock, s.name, l.url 
FROM phones p 
INNER JOIN links l ON l.phone_id = p.id 
INNER JOIN stores s ON s.id = l.store_id 
INNER JOIN stock st ON st.store_id = s.id AND st.phone_id = p.id 
WHERE s.id IN ('3', '4', '5', '6', '8') 
AND p.id = '5' 

datetime未在表中的描述定义,所以我忽略它添加到查询,但这次应该提供你在找什么。

+0

谢谢anothershrubery。您所建议的查询确实会带回我想要的内容,但是它仅返回where子句中的其中一个商店的列表。现在来看看它,但任何建议都会受到欢迎。 – ajay87 2011-03-18 16:47:58

+0

如果你只是复制/粘贴我的查询上面,问题是,我把一些完整的停止,而不是逗号!尝试上面更新的查询。 – anothershrubery 2011-03-18 16:51:13

+0

其实如果你复制/粘贴上一个查询,它应该不会跑!在不知道数据库中的数据的情况下,我不明白为什么它不会使用它们的ID返回所有商店。尝试不使用WHERE子句并查看返回的是什么ID。 (很明显,将's.id'添加到返回的字段中。) – anothershrubery 2011-03-18 16:53:23