在第 3 个 table 中使用参数将 WHERE 子句添加到 JOIN
Add a WHERE clause to a JOIN with an argument in a 3rd table
我正在开发一个将数据从 SQL Server Express 数据库转换为 .CSV
文件的程序,我使用的是 C#。我遇到了 SQL 查询的问题。
我需要使用特定的条件来缩小查询的范围,但这个条件在另一个 table 中,称为 F_COLLABORATEUR
(它是法语,但名称并不重要,对吧? ).我需要将此条件添加到查询 WHERE F_DOCENTETE.CO_NO = F_COLLABORATEUR.CO_NO
,以匹配最后一个 table (3).
这需要在一个大查询中,我搜索了一下并尝试进行子查询,但我收到了这个错误消息:
Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows....
然后我尝试使用连接,但是当我添加第三个条件时它说:
The multi-part identifier "F_COLLABORATEUR" could not be bound
(我是 SQL 的初学者)
SELECT
F_DOCLIGNE.DL_Qte * F_DOCLIGNE.DL_PrixRU AS prix_revient_total
FROM
F_DOCLIGNE
JOIN
F_DOCENTETE ON ((F_DOCLIGNE.DO_Piece = F_DOCENTETE.DO_Piece)
AND(F_DOCENTETE.DO_PIECE LIKE 'BC%'));
这是有效的代码,但没有附加条件。
SELECT
F_DOCLIGNE.DL_Qte * F_DOCLIGNE.DL_PrixRU AS prix_revient_total
FROM
F_DOCLIGNE
JOIN
F_DOCENTETE ON ((F_DOCLIGNE.DO_Piece = F_DOCENTETE.DO_Piece)
AND F_DOCENTETE.CO_NO = F_COLLABORATEUR.CO_NO
AND (F_DOCENTETE.DO_PIECE LIKE 'BC%'));
这是完整的 ON
我想使用。
SELECT
F_COLLABORATEUR.CO_NOM AS nom_commercial,
F_DOCENTETE.DO_PIECE AS ref_document,
F_DOCENTETE.AB_NO AS numero_abonnement,
F_DOCENTETE.CA_NUM AS compte_analytique,
F_DOCENTETE.CBMODIFICATION AS modified_on,
F_DOCENTETE.CT_NUMPAYEUR AS ref_societe_payeur,
F_DOCENTETE.DO_CONTACT AS contact,
F_DOCENTETE.DO_COORD01 AS nom_client_final1,
F_DOCENTETE.DO_COORD02 AS nom_client_final2,
F_DOCENTETE.DO_DATE AS date_emission,
F_DOCENTETE.DO_DEBUTPERIOD AS debut_periode,
F_DOCENTETE.DO_FINPERIOD AS fin_periode,
F_DOCENTETE.DO_REF AS numero_piece_externe,
F_DOCENTETE.DO_TIERS AS ref_societe_sage,
F_DOCENTETE.DO_TotalTTC - F_DOCENTETE.DO_TotalHTNet AS total_tva,
F_DOCENTETE.DO_TotalHTNet AS total_ht,
F_DOCENTETE.DO_TotalTTC AS total_ttc,
/*I'D LIKE TO INSERT THE OTHER QUERY HERE!*/
F_DOCENTETE.DO_TYPE AS type_document
FROM
F_DOCENTETE, F_COLLABORATEUR
WHERE
F_DOCENTETE.CO_NO = F_COLLABORATEUR.CO_NO
AND (F_DOCENTETE.DO_PIECE LIKE 'BC%')
这是我必须使用的完整查询 (3)
无法真正post查询结果,因为我使用的数据库是机密的。但是我只有一个有 1 列的 table 和一个有 18 列的 table,我想制作一个有 19 列的 table。
感谢您的回答!
感谢您的回答,我设法更正了第一个问题。
我现在只需要将它与 Query(3) 合并。 (我可能也需要帮助)
这是我编写的代码(所有值都不匹配,但我认为这是一个本地问题...)
Select
F_DOCLIGNE.DO_Piece,
SUM((F_DOCLIGNE.DL_Qte)*(F_DOCLIGNE.DL_PrixRU)) as prix_revient_total
from F_DOCLIGNE
JOIN F_DOCENTETE
ON ((F_DOCLIGNE.DO_Piece = F_DOCENTETE.DO_Piece) AND(F_DOCENTETE.DO_PIECE LIKE 'BC%'))
JOIN F_COLLABORATEUR
ON F_DOCENTETE.Co_No = F_COLLABORATEUR.CO_NO
GROUP BY F_DOCLIGNE.DO_Piece, F_DOCENTETE.DO_Piece
您可以按如下方式对结果进行分组-
SELECT F_DOCLIGNE.DO_Piece,
SUM( (F_DOCLIGNE.DL_Qte) * (F_DOCLIGNE.DL_PrixRU)) AS prix_revient_total
FROM F_DOCLIGNE
JOIN F_DOCENTETE ON((F_DOCLIGNE.DO_Piece = F_DOCENTETE.DO_Piece)
AND (F_DOCENTETE.DO_PIECE LIKE 'BC%'))
JOIN F_COLLABORATEUR ON F_DOCENTETE.Co_No = F_COLLABORATEUR.CO_NO
GROUP BY F_DOCLIGNE.DO_Piece;
我正在开发一个将数据从 SQL Server Express 数据库转换为 .CSV
文件的程序,我使用的是 C#。我遇到了 SQL 查询的问题。
我需要使用特定的条件来缩小查询的范围,但这个条件在另一个 table 中,称为 F_COLLABORATEUR
(它是法语,但名称并不重要,对吧? ).我需要将此条件添加到查询 WHERE F_DOCENTETE.CO_NO = F_COLLABORATEUR.CO_NO
,以匹配最后一个 table (3).
这需要在一个大查询中,我搜索了一下并尝试进行子查询,但我收到了这个错误消息:
Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows....
然后我尝试使用连接,但是当我添加第三个条件时它说:
The multi-part identifier "F_COLLABORATEUR" could not be bound
(我是 SQL 的初学者)
SELECT
F_DOCLIGNE.DL_Qte * F_DOCLIGNE.DL_PrixRU AS prix_revient_total
FROM
F_DOCLIGNE
JOIN
F_DOCENTETE ON ((F_DOCLIGNE.DO_Piece = F_DOCENTETE.DO_Piece)
AND(F_DOCENTETE.DO_PIECE LIKE 'BC%'));
这是有效的代码,但没有附加条件。
SELECT
F_DOCLIGNE.DL_Qte * F_DOCLIGNE.DL_PrixRU AS prix_revient_total
FROM
F_DOCLIGNE
JOIN
F_DOCENTETE ON ((F_DOCLIGNE.DO_Piece = F_DOCENTETE.DO_Piece)
AND F_DOCENTETE.CO_NO = F_COLLABORATEUR.CO_NO
AND (F_DOCENTETE.DO_PIECE LIKE 'BC%'));
这是完整的 ON
我想使用。
SELECT
F_COLLABORATEUR.CO_NOM AS nom_commercial,
F_DOCENTETE.DO_PIECE AS ref_document,
F_DOCENTETE.AB_NO AS numero_abonnement,
F_DOCENTETE.CA_NUM AS compte_analytique,
F_DOCENTETE.CBMODIFICATION AS modified_on,
F_DOCENTETE.CT_NUMPAYEUR AS ref_societe_payeur,
F_DOCENTETE.DO_CONTACT AS contact,
F_DOCENTETE.DO_COORD01 AS nom_client_final1,
F_DOCENTETE.DO_COORD02 AS nom_client_final2,
F_DOCENTETE.DO_DATE AS date_emission,
F_DOCENTETE.DO_DEBUTPERIOD AS debut_periode,
F_DOCENTETE.DO_FINPERIOD AS fin_periode,
F_DOCENTETE.DO_REF AS numero_piece_externe,
F_DOCENTETE.DO_TIERS AS ref_societe_sage,
F_DOCENTETE.DO_TotalTTC - F_DOCENTETE.DO_TotalHTNet AS total_tva,
F_DOCENTETE.DO_TotalHTNet AS total_ht,
F_DOCENTETE.DO_TotalTTC AS total_ttc,
/*I'D LIKE TO INSERT THE OTHER QUERY HERE!*/
F_DOCENTETE.DO_TYPE AS type_document
FROM
F_DOCENTETE, F_COLLABORATEUR
WHERE
F_DOCENTETE.CO_NO = F_COLLABORATEUR.CO_NO
AND (F_DOCENTETE.DO_PIECE LIKE 'BC%')
这是我必须使用的完整查询 (3)
无法真正post查询结果,因为我使用的数据库是机密的。但是我只有一个有 1 列的 table 和一个有 18 列的 table,我想制作一个有 19 列的 table。
感谢您的回答!
感谢您的回答,我设法更正了第一个问题。
我现在只需要将它与 Query(3) 合并。 (我可能也需要帮助)
这是我编写的代码(所有值都不匹配,但我认为这是一个本地问题...)
Select
F_DOCLIGNE.DO_Piece,
SUM((F_DOCLIGNE.DL_Qte)*(F_DOCLIGNE.DL_PrixRU)) as prix_revient_total
from F_DOCLIGNE
JOIN F_DOCENTETE
ON ((F_DOCLIGNE.DO_Piece = F_DOCENTETE.DO_Piece) AND(F_DOCENTETE.DO_PIECE LIKE 'BC%'))
JOIN F_COLLABORATEUR
ON F_DOCENTETE.Co_No = F_COLLABORATEUR.CO_NO
GROUP BY F_DOCLIGNE.DO_Piece, F_DOCENTETE.DO_Piece
您可以按如下方式对结果进行分组-
SELECT F_DOCLIGNE.DO_Piece,
SUM( (F_DOCLIGNE.DL_Qte) * (F_DOCLIGNE.DL_PrixRU)) AS prix_revient_total
FROM F_DOCLIGNE
JOIN F_DOCENTETE ON((F_DOCLIGNE.DO_Piece = F_DOCENTETE.DO_Piece)
AND (F_DOCENTETE.DO_PIECE LIKE 'BC%'))
JOIN F_COLLABORATEUR ON F_DOCENTETE.Co_No = F_COLLABORATEUR.CO_NO
GROUP BY F_DOCLIGNE.DO_Piece;