Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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
Php 如何从3个表中获取数据?_Php_Mysql_Select_Mysqli - Fatal编程技术网

Php 如何从3个表中获取数据?

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 但我

我有三个表格:“新闻”、“评论”和“摩擦”。我需要从“新闻”中获取所有数据,从“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
但我需要类似的东西,而这段代码不起作用(对非对象调用成员函数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