【问题标题】:SQL Select Statement joining [duplicate]SQL Select 语句加入 [重复]
【发布时间】:2020-04-18 11:57:48
【问题描述】:

我有一个 oc_category_description 表,其中列是:

  • category_id
  • 姓名

以及列所在的其他表 oc_category:

  • category_id
  • 图片
  • parent_id

这里是 oc_category_description 表的示例图片

oc_category 表

这里我想显示名字、category_id、image、parent_id,其中oc_category parent_id 为0;

这里是sql:

php

function getMainCategory()
{
    $stmt = $this->con->prepare("SELECT category_id, image, parent_id, (SELECT oc_category_description.name FROM oc_category_description WHERE oc_category.category_id = oc_category_description.category_id) FROM oc_category WHERE parent_id = 0 ORDER BY category_id ASC");

    $stmt->execute();
    $stmt->bind_result($category_id, $image, $parent_id, $name);

    $users = array();

    while ($stmt->fetch()) {
        $temp = array();
        $temp['category_id'] = $category_id;
        $temp['image'] = $image;
        $temp['parent_id'] = $parent_id;
        $temp['name'] = $name;

        array_push($users, $temp);
    }
    return $users;
}

但它什么也没返回:(

【问题讨论】:

标签: php android mysql sql slim


【解决方案1】:

使用连接

SELECT ocd.category_id, image, parent_id, name
FROM oc_category_description  AS ocd
INNER JOIN oc_category 
WHERE parent_id = 0 
ORDER BY ocd.category_id ASC

【讨论】:

  • 没用。什么都不返回 :(
  • 尝试在 LEFT JOIN 上更改 INNER JOIN。如果它没有帮助尝试选择没有加入和“名称”。如果它仍然没有数据 - 想想吧。
【解决方案2】:

使用 INNER JOIN:

SELECT d.category_id, c.image, c.parent_id, d.name
FROM oc_category_description  d INNER JOIN oc_category c
ON c.category_id = d.category_id
WHERE c.parent_id = 0 
ORDER BY d.category_id

如果结果中出现重复行,则更改为:

SELECT DISTINCT...

【讨论】:

  • 没用。结果没有:(
  • 那么没有符合你条件的行。发布样本数据和预期结果。
  • 编辑了问题。现在请检查。
猜你喜欢
  • 2012-11-19
  • 2013-12-21
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
相关资源
最近更新 更多