gpt4 book ai didi

c# - 关于INNER JOIN的正确使用

转载 作者:搜寻专家 更新时间:2023-10-30 22:03:24 25 4
gpt4 key购买 nike

我一直在尝试将数据从我的数据库检索到 Microsoft Visual C# 中的数据表时遇到问题。有人告诉我这是因为不正确使用 INNER JOIN。查询(Fill 方法)如下。

SELECT Bordero.id AS id, Titulo.id AS id_titulo, Titulo.valor AS valor_titulo, 
Sacado.nome AS nome_sacado, Cliente.nome AS nome_cliente, Sacado.documento,
Titulo.taxa_adm AS taxa_adm_titulo, Titulo.desagio AS desagio_titulo,
Titulo.liquido AS liquido_titulo,
(CASE Titulo.tipo
WHEN 'True' THEN 'Cheque'
ELSE 'Duplicata'
END) AS tipo, Titulo.dias, Titulo.codigo, Titulo.vencimento,
Titulo.data_base, Bordero.desagio AS desagio_bordero,
Bordero.taxa_adm AS taxa_adm_bordero, Bordero.liquido AS liquido_bordero,
Bordero.bruto, Bordero.duplicata, Bordero.desconto, Bordero.iss, Bordero.iof,
Bordero.cpmf, Bordero.pis, Bordero.cofins, Desconto.valor AS valor_desconto,
Desconto.descricao, Bordero.id_cliente
FROM Bordero
INNER JOIN Cliente ON Bordero.id_cliente = Cliente.id
INNER JOIN Titulo ON Bordero.id = Titulo.bordero_id
INNER JOIN Sacado ON Sacado.id = Titulo.sacado_id
INNER JOIN Desconto ON Cliente.id = Desconto.id_cliente

数据库图如下所示: http://i53.tinypic.com/t0g4qp.jpg

有什么问题的提示吗?

最佳答案

没有说明您遇到的问题是什么,我的猜测是您可能需要对某些表使用 LEFT OUTER JOIN 而不是所有 INNER JOIN.

在查询中使用 INNER JOIN 时,您通过 ON 子句匹配的数据必须在两个查询中都不为空表。这意味着如果 ID 存在于左表中(FROM 子句中的那个),右表中必须有一个匹配的记录(您通过 INNER JOIN 加入的那个) )。如果右表没有匹配的记录,则从查询中删除整个结果。

通过使用 LEFT OUTER JOIN,您允许右表为每个不匹配的数据行返回 NULL

TABLE A       TABLE B
ID | Name ID | Address
1 | Alice 1 | 123 ABC St.
2 | Bob 3 | 789 XYZ St.
3 | Cam

使用上面的表格,如果您要执行 FROM A INNER JOIN B ON A.ID = B.ID,则只会返回第 1 行和第 3 行。如果你要执行 FROM A LEFT OUTER JOIN B ON A.ID = B.ID 所有来自 A 的行将被返回并且 B.Address 对于 #2 将为 null。

关于c# - 关于INNER JOIN的正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7142721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com