如何将这两个SELECT语句合并为一个

时间:2020-08-20 08:36:42

标签: sql oracle

我有两个用MySQL编写的SELECT查询

$sql = 'SELECT Name FROM category WHERE CategoryID = '.$id;

AND

$sql = "SELECT * FROM sub_category WHERE ParentID = $id ORDER BY OrderIndex";

到目前为止,我不得不将这两个查询转换为Oracle PL/SQL。我想到了将这两个陈述合并为一个,到目前为止,我编写了查询,但是由于我在{{ 1}}

PL/SQL

这是表格的图形表示

类别表

enter image description here

子类别表

enter image description here

2 个答案:

答案 0 :(得分:1)

您的想法是正确的,联接表是“将两个select语句组合在一起”的标准方法之一。 根据您使用的join的类型,您将获得不同的结果。 例如,请参见此question,了解有关不同类型的联接的说明。

您的查询几乎是正确的(假设您要使用inner join),而您在join条件下缺少右侧:

SELECT 
  c.Name,
  sc.Name as SubCategoryName,
  sc.ID as SubCategoryID,
  sc.Picture as Picture,
  sc.OrderIndex
FROM Category c
INNER JOIN sub_category sc ON sc.ParentID = c.CategoryID
WHERE CategoryID = 23;

答案 1 :(得分:1)

您的选择即将生效,您忘记了在表的列上连接连接的表,这将导致错误,并且不需要将inner用作inner join = join。有关联接的更多有用信息,请参见https://www.techonthenet.com/oracle/joins.php

这应该对您有用:

SELECT c.name,
       sc.name       subcategoryname,
       sc.id         subcategoryid,
       sc.picture    picture,
       sc.orderindex
  FROM category c
  JOIN sub_category sc
    ON sc.parentid = c.categoryid
 WHERE c.categoryid = 23;