Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL连接查询问题_Mysql_Join - Fatal编程技术网

MySQL连接查询问题

MySQL连接查询问题,mysql,join,Mysql,Join,我有以下表格 PHONES - id - name - colour - size STOCK - store_id - phone_id - instock STORES - id - name LINKS - store_id - phone_id - url 我想从STOCK.phone\u id=PHONES.id=LINKS.phone\u id和STOCK.store\u id=LINKS.store\u id=LINKS.store\u id和STO

我有以下表格

PHONES
 - id
 - name
 - colour
 - size

STOCK
 - store_id
 - phone_id
 - instock

STORES
 - id
 - name

LINKS
 - store_id
 - phone_id
 - url
我想从STOCK.phone\u id=PHONES.id=LINKS.phone\u id和STOCK.store\u id=LINKS.store\u id=LINKS.store\u id和STORES.id=STOCK.store\u id的链接中选择名称、颜色、手机尺寸、库存instock、门店名称和url

我要输出,phone.name,phone.colour,phone.size,stock.instock,stores.name,links.url

这是我目前的问题。我没有得到具体的链接回相关的商店和电话号码的

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
datetime
未在表描述中定义,因此我忽略了将其添加到查询中,但这应该提供您正在查找的内容


datetime
未在您的表描述中定义,因此我忽略了将其添加到查询中,但这应该可以提供您正在查找的内容。

谢谢另一个shubery。您建议的查询确实返回了我想要的内容,但是它只返回where子句中一个商店的列表。现在我们来看一看,但是任何建议都是受欢迎的。如果你只是复制/粘贴我上面的查询,问题是我用了一些句号而不是逗号!尝试上面更新的查询。实际上,如果您复制/粘贴了上一个查询,它就不应该运行了!在不知道数据库中的数据的情况下,我不明白为什么它不会返回所有带有id的存储。尝试不使用
WHERE
子句,查看返回的id。(显然是将
s.id
添加到返回的字段中。)Yeah注意到了.s的错误,现在查询还包括WHERE子句(我的错误)。我会很好地返回数据。然而,似乎顺序不对。通过下面的查询,我返回了5行,但商店名称相同,并且链接差异
选择p.model、p.color、p.size、st.instock、s.name、l.url、,来自电话的st.datetime作为p内部连接链接作为l.phone上的l\U id=p.id内部连接存储为s.id=l.store\U id内部连接库存作为st.store上的st\U id=s.id和st.phone\U id=p.id,其中s.id位于('3','4','5','6','8'))并且p.id='5'ORDER BY st.datetime DESC LIMIT 5
在您的链接表中是否有多个相同id的存储区?谢谢。您建议的查询确实返回了我想要的内容,但是它只返回where子句中一个商店的列表。现在我们来看一看,但是任何建议都是受欢迎的。如果你只是复制/粘贴我上面的查询,问题是我用了一些句号而不是逗号!尝试上面更新的查询。实际上,如果您复制/粘贴了上一个查询,它就不应该运行了!在不知道数据库中的数据的情况下,我不明白为什么它不会返回所有带有id的存储。尝试不使用
WHERE
子句,查看返回的id。(显然是将
s.id
添加到返回的字段中。)Yeah注意到了.s的错误,现在查询还包括WHERE子句(我的错误)。我会很好地返回数据。然而,似乎顺序不对。通过下面的查询,我返回了5行,但商店名称相同,并且链接差异
选择p.model、p.color、p.size、st.instock、s.name、l.url、,st.datetime FROM phones AS p INNER JOIN LINK AS l ON l.phone\u id=p.id INNER JOIN store AS s ON s.id=l.store\u id INNER JOIN stock AS st.store\u id=s.id和st.phone\u id=p.id,其中s.id在('3','4','5','6','8')和p.id='5'顺序中,按st.datetime DESC LIMIT 5
在链接表中是否有多个相同id的存储?
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'