Php 如何从3个表中获取数据?
我有三个表格:“新闻”、“评论”和“摩擦”。我需要从“新闻”中获取所有数据,从“rub”中获取“标题”,并计算每条新闻的评论数 现在我无法从“rub”中获得“title”。以下代码有效:Php 如何从3个表中获取数据?,php,mysql,select,mysqli,Php,Mysql,Select,Mysqli,我有三个表格:“新闻”、“评论”和“摩擦”。我需要从“新闻”中获取所有数据,从“rub”中获取“标题”,并计算每条新闻的评论数 现在我无法从“rub”中获得“title”。以下代码有效: SELECT n.id,n.header,n.text, COUNT(c.news_id) AS comments FROM news n LEFT JOIN comments c ON n.id = c.news_id GROUP BY n.id ORDER by n.id LIMIT 30 但我
SELECT n.id,n.header,n.text, COUNT(c.news_id) AS comments
FROM news n
LEFT JOIN comments c ON n.id = c.news_id
GROUP BY n.id
ORDER by n.id
LIMIT 30
但我需要类似的东西,而这段代码不起作用(对非对象调用成员函数fetch_array()):
如何修复它?我不太清楚你在问什么,但你需要另一个
加入。您需要将rub
表的连接条件移动到该join
关键字,而不是移动到comments
表的连接条件中
SELECT n.id,
n.header,
n.text,
r.title, -- comma was missing (as halfer mentioned)
COUNT(c.news_id) AS comments
FROM news n
JOIN rub r ON r.news_id=n.id --- this is missing
LEFT JOIN comments c ON n.id = c.new_id -- no join condition for rub/news here
GROUP BY n.id
ORDER by n.id
LIMIT 30
您使用的GROUP BY
操作符也是错误的。上述查询将被所有其他DBMS(正确地)拒绝
请阅读以下内容,了解您的分组依据
错误的原因:
您在第二条语句中的COUNT
函数前面缺少一个逗号,
。我们看不到您的PHP代码,但我认为您在获取结果之前没有检查数据库错误。以及其他打字错误。你做错的是哈夫特所写的:你甚至没有向数据库询问给出的具体错误。你在瞎飞。您需要将其作为错误的数据库。还可以看到这个错误的许多重复:@Narendra,“我是”的缩写应该有一个撇号(;-)是的,我一分钟前就做了!
SELECT n.id,
n.header,
n.text,
r.title, -- comma was missing (as halfer mentioned)
COUNT(c.news_id) AS comments
FROM news n
JOIN rub r ON r.news_id=n.id --- this is missing
LEFT JOIN comments c ON n.id = c.new_id -- no join condition for rub/news here
GROUP BY n.id
ORDER by n.id
LIMIT 30