如何解决如何将这两个SELECT语句合并到一个
我有一个类似这样的MySQL查询:
if($wr_id) {
$sql = "SELECT
csi.*,aa.Name
FROM
completed_supplier_invoices csi
INNER JOIN
ata_articles aa
ON
aa.Id = csi.MaterialArticleId
WHERE
aa.AtaId = $ata_id
AND
aa.wrId = $wr_id";
} else {
$sql = "SELECT
csi.*,aa.Name
FROM
completed_supplier_invoices csi
INNER JOIN
ata_articles aa
ON
aa.Id = csi.MaterialArticleId
WHERE
aa.AtaId = $ata_id";
}
我需要在Oracle SQL
中编写这些查询,由于我在Oracle SQL
中没有足够的经验,因此在这里我对这两个SELECT
语句有些困惑。>
到目前为止,我尝试使用UNION
,但是我不确定这是否是一个好的解决方案,到目前为止,我不确定结果是否正确。
有人可以指导我并告诉我如何解决这个问题吗?
我将非常感谢
我的解决方案
SELECT
csi.*,aa.Name
FROM
completed_supplier_invoices csi
INNER JOIN
ata_articles aa
ON
aa.Id = csi.MaterialArticleId
WHERE
aa.AtaId = 2014
AND
aa.wrId = 355
UNION
SELECT
csi.*,aa.Name
FROM
completed_supplier_invoices csi
INNER JOIN
ata_articles aa
ON
aa.Id = csi.MaterialArticleId
WHERE
aa.AtaId = 2014
解决方法
类似以下的方法应该起作用:
SELECT
csi.*,aa.Name
FROM completed_supplier_invoices csi
INNER JOIN ata_articles aa
ON aa.Id = csi.MaterialArticleId
WHERE
aa.AtaId = $ata_id AND
(aa.wrId = $wr_id OR $wr_id IS NULL);
未定义$wr_id
(即NULL
)时,第一个查询中出现的WHERE
子句中的第二个条件实际上消失了。定义$wr_id
后,查询基本上会减少第一个查询。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。