GBase 8s
运维管理
文章

南大通用GBase8s 常用SQL语句(211)

发表于2025-12-17 10:23:1719次浏览1个评论

下列示例使用 OUTER 关键字来创建罗列所有客户及其订单的外连接,不论他们是否已下订单:

SELECT c.customer_num, c.lname, o.order_num FROM customer c,

        OUTER orders o WHERE c.customer_num = o.customer_num;

此带有在 orders 表中相匹配的行从 customer 表返回所有行。如果在 orders 表中没有客户的记录出现,则对那些有 NULL 值的客户返回的 order_num 列。

如果您有复合的外连接,即,该查询有多个外连接,则您必须或者嵌入附加的外连接或者在圆括号中连接,如语法图所示,或在 WHERE 子句中的主表与每一从表之间创建连接条件或关系。

当 WHERE 子句中的表达式或条件关系到两个从表时,您必须在 FROM 子句中使用圆括号将连接的表括起来,以强调主-从关系,如此例中所示:

SELECT c.company, o.order_date, i.total_price, m.manu_name

        FROM customer c,

        OUTER (orders o, OUTER (items i, OUTER manufact m))

        WHERE c.customer_num = o.customer_num

        AND o.order_num = i.order_num

        AND i.manu_code = m.manu_code;

当您在 FROM 子句中省略括起从表的圆括号时,您必须在 WHERE 子句中的主表与每一从表之间建立连接条件。如果连接条件在两个从表之间,则查询失败。

然而,下列示例成功地返回结果

l 将主表 customer 与子表 orders 连接

l 并将主表 customer 与从表 cust_calls 连接:

SELECT c.company, o.order_date, c2.call_descr

        FROM customer c, OUTER orders o, OUTER cust_calls c2

        WHERE c.customer_num = o.customer_num

        AND c.customer_num = c2.customer_num;

GBase 8s SQL 教程指南 有复合的外连接的示例。

评论

登录后才可以发表评论
用户头像
levvel发表于 4个月前
给你点个赞