【问题标题】:MySQL query, problem with my join?MySQL查询,我的加入有问题吗?
【发布时间】:2010-07-27 23:51:27
【问题描述】:

我不确定这个问题,但看看:

我有 3 张桌子:

  1. 类别:ID、图标、名称;
  2. 子类别:id、name、description、category_id;
  3. 主题:id、title、text、author、created、subcategory_id;

现在我正在尝试获取此信息(查询):

  $String = "SELECT
  categories.id AS catid,
  categories.icon AS caticon,
  categories.name AS catname,
  subcategories.id AS scatid,
  subcategories.name AS scatname,
  subcategories.description AS scatdescription,
  subcategories.category_id AS scatcatid,
  COUNT(topics.id) AS tid,
  topics.title AS ttitle,
  topics.author AS tauthor,
  topics.created AS tcreated
       FROM
  categories
LEFT JOIN
  subcategories
ON
  subcategories.category_id = 1
LEFT JOIN
  topics
ON
  subcategories.id = topics.subcategory_id
GROUP BY
 categories.id";

结果:

5 中的类别显示 5 - OK, 4 个子类别中的第一个类别仅显示 1 个。

也许查询太长了?感谢您的任何回答。

【问题讨论】:

  • 在第一次加入时,您已经写了:subcategories.category_id = 1 ...据我了解,这将仅加入类别 1 的所有子类别 ...

标签: mysql


【解决方案1】:

这个

LEFT JOIN
  subcategories
ON
  subcategories.category_id = 1

应该是这样的

LEFT JOIN
  subcategories
ON
  subcategories.category_id = categories.id

【讨论】:

  • 是的,得到相同的结果。类别中只有 1 个子类别。
  • $string_result = mysql_query($string_query) 或死(mysql_error()); while($string_row = mysql_fetch_array($string_result)){ 可能这里错了?
  • 看起来不错(除了 result 和 row 都不是字符串,所以如果你想在名称中输入类型,那是错误的。尽管以任何方式与功能无关)也许可以尝试一下首先更容易 - 如果您忽略主题的第二次加入会发生什么?
猜你喜欢
  • 2019-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
相关资源
最近更新 更多