我有两个用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
这是表格的图形表示
类别表
子类别表
答案 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;