外连接的写法

先写上代码:
select * from
(
select mmt.transaction_id ,mmt.transaction_source_id
from inv.mtl_material_transactions mmt
where mmt.transaction_date >= to_date('20060522', 'yyyymmdd')
and mmt.organization_id = 9
and mmt.transaction_source_id in (192112,192113,190681)
) a1,
( select we.wip_entity_id from wip.wip_entities we where we.wip_entity_id in (1,2,3))
a2
where a1.transaction_source_id = a2.wip_entity_id (+)
[@more@]

这是oracle的两张表,这样就将a1表中的数据全部列出来,应该叫做左外连接。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/341285/viewspace-837292/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/341285/viewspace-837292/

### SQL 左连接写法与示例 SQL 左连接(Left Join 或 Left Outer Join)用于返回左表中的所有记录以及右表中符合连接条件的匹配记录。如果右表中没有匹配的记录,则结果集中右表对应的字段将填充为 `NULL`[^2]。 #### 语法 以下是 SQL 左连接的标准语法: ```sql SELECT columns FROM table1 t1 LEFT JOIN table2 t2 ON t1.column = t2.column; ``` - `table1` 和 `table2` 分别表示参与连接的左表和右表。 - `t1.column = t2.column` 是连接条件,通常基于两个表之间的关联字段。 #### 示例 假设存在两张表:`students` 和 `grades`,分别存储学生信息和成绩信息。 **表结构:** - `students` 表: ```sql +----+-------+----------+ | id | name | class_id | +----+-------+----------+ | 1 | Alice | 1 | | 2 | Bob | 2 | | 3 | Carol | NULL | +----+-------+----------+ ``` - `grades` 表: ```sql +----+---------+-------+ | id | student | score | +----+---------+-------+ | 1 | 1 | 85 | | 2 | 2 | 90 | +----+---------+-------+ ``` **查询需求:** 获取所有学生的姓名及其对应的成绩,即使某些学生没有成绩记录。 **SQL 查询:** ```sql SELECT s.name, g.score FROM students s LEFT JOIN grades g ON s.id = g.student; ``` **查询结果:** ```sql +-------+-------+ | name | score | +-------+-------+ | Alice | 85 | | Bob | 90 | | Carol | NULL | +-------+-------+ ``` 在上述查询中,`Carol` 没有对应的 `grades` 记录,因此其 `score` 字段显示为 `NULL`[^2]。 ### ThinkPHP 中的链式写法实现左连接 在 ThinkPHP 框架中,可以通过链式写法构建复杂的 SQL 查询,包括左连接操作[^1]。以下是一个使用 ThinkPHP 实现左连接的示例: ```php $db->table('students s') ->field('s.name, g.score') ->join('grades g', 's.id = g.student', 'LEFT') ->select(); ``` - `table` 方法指定主表。 - `field` 方法定义需要查询的字段。 - `join` 方法实现表连接,第三个参数指定连接类型(如 `LEFT`、`RIGHT` 等)。 - `select` 方法执行查询并返回结果。 ### 注意事项 - 左连接的核心在于保留左表的所有记录,即使右表中没有匹配项[^2]。 - 在实际应用中,应确保连接条件明确且合理,以避免笛卡尔积现象[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值