Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 仅连接一条记录,即使条件匹配多条记录_Mysql_Sql_Join - Fatal编程技术网

Mysql 仅连接一条记录,即使条件匹配多条记录

Mysql 仅连接一条记录,即使条件匹配多条记录,mysql,sql,join,Mysql,Sql,Join,示例查询 SELECT count(A.ID) FROM `TABLE_A` A LEFT JOIN `TABLE_B` B ON (A.ID=B.ID) WHERE ..... SELECT CampaignName,fsbcorponline.leads360campaigns.CostPerLead, count(fsbcorponline.leads360leads.id) leadCount, count(CASE WHEN fsbcorponline.leads360lead

示例查询

SELECT count(A.ID) 
FROM `TABLE_A` A LEFT JOIN `TABLE_B` B ON (A.ID=B.ID) 
WHERE .....
SELECT CampaignName,fsbcorponline.leads360campaigns.CostPerLead, 
count(fsbcorponline.leads360leads.id) leadCount,
count(CASE WHEN fsbcorponline.leads360leads.leadStatus like '%Contact Attempt%' OR                                
leadStatus like '%Call Back/Follow-up%' OR                                 
leadStatus like '%Working%' OR                                 
leadStatus like '%Credit Pulled%' OR                                 
leadStatus like '%Selected other Lender%' OR                                 
leadStatus like '%Pre-Approved%' OR                                 
leadStatus like '%Application Taken/Sent%' OR                                 
leadStatus like '%Application Received%' OR                                 
leadStatus like '%Submitted%' OR                                
leadStatus like '%Funded%' OR                                 
leadStatus like '%Future Opportunity%' OR                                 
leadStatus like '%Manager Review%' THEN 1 END ) leadContacted,         
COUNT(CASE WHEN fsbcorponline.leads360leads.lead_id IS NOT NULL THEN 1 END ) leadsToEncompass ,          
COUNT(CASE WHEN fsbcorponline.leads_to_loan.loan_closeDate IS NOT NULL AND loan_closeDate !='1900-01-01 00:00:00' THEN 1 END ) leadsToEncompassClose,         
COUNT(CASE WHEN fsbcorponline.leads_to_loan.loan_FundedDate IS NOT NULL AND loan_FundedDate !='1900-01-01 00:00:00' THEN 1 END ) leadsToEncompassFunded  
FROM (fsbcorponline.leads360leads LEFT JOIN fsbcorponline.leads360campaigns ON fsbcorponline.leads360leads.CampaignId=fsbcorponline.leads360campaigns.CampaignId)  
LEFT JOIN fsbcorponline.leads_to_loan ON fsbcorponline.leads360leads.id =lead_id  
Where 1=1 AND dateAdded between '11/24/2012 08:59:00' and '12/24/2012 08:59:00'AND CampaignName like '%TFSB.com%'
我需要:

<> >即使<代码> A.id <代码>匹配表B中的多个记录,也应该只考虑其中一个。

实际查询

SELECT count(A.ID) 
FROM `TABLE_A` A LEFT JOIN `TABLE_B` B ON (A.ID=B.ID) 
WHERE .....
SELECT CampaignName,fsbcorponline.leads360campaigns.CostPerLead, 
count(fsbcorponline.leads360leads.id) leadCount,
count(CASE WHEN fsbcorponline.leads360leads.leadStatus like '%Contact Attempt%' OR                                
leadStatus like '%Call Back/Follow-up%' OR                                 
leadStatus like '%Working%' OR                                 
leadStatus like '%Credit Pulled%' OR                                 
leadStatus like '%Selected other Lender%' OR                                 
leadStatus like '%Pre-Approved%' OR                                 
leadStatus like '%Application Taken/Sent%' OR                                 
leadStatus like '%Application Received%' OR                                 
leadStatus like '%Submitted%' OR                                
leadStatus like '%Funded%' OR                                 
leadStatus like '%Future Opportunity%' OR                                 
leadStatus like '%Manager Review%' THEN 1 END ) leadContacted,         
COUNT(CASE WHEN fsbcorponline.leads360leads.lead_id IS NOT NULL THEN 1 END ) leadsToEncompass ,          
COUNT(CASE WHEN fsbcorponline.leads_to_loan.loan_closeDate IS NOT NULL AND loan_closeDate !='1900-01-01 00:00:00' THEN 1 END ) leadsToEncompassClose,         
COUNT(CASE WHEN fsbcorponline.leads_to_loan.loan_FundedDate IS NOT NULL AND loan_FundedDate !='1900-01-01 00:00:00' THEN 1 END ) leadsToEncompassFunded  
FROM (fsbcorponline.leads360leads LEFT JOIN fsbcorponline.leads360campaigns ON fsbcorponline.leads360leads.CampaignId=fsbcorponline.leads360campaigns.CampaignId)  
LEFT JOIN fsbcorponline.leads_to_loan ON fsbcorponline.leads360leads.id =lead_id  
Where 1=1 AND dateAdded between '11/24/2012 08:59:00' and '12/24/2012 08:59:00'AND CampaignName like '%TFSB.com%'

尝试此
不同计数
即可

SELECT count(distinct A.ID) 
FROM `TABLE_A` A JOIN `TABLE_B` B ON (A.ID=B.ID) 
WHERE .....
既然你关心 只有匹配的记录,简单地
JOIN
就可以了,不需要
LEFT JOIN

SELECT CampaignName,fsbcorponline.leads360campaigns.CostPerLead, 
count( distinct fsbcorponline.leads360leads.id) leadCount,
count(
CASE WHEN leadStatus like '%Contact Attempt%' OR                                
leadStatus like '%Call Back/Follow-up%' OR                                 
leadStatus like '%Working%' OR                                 
leadStatus like '%Credit Pulled%' OR                                 
leadStatus like '%Selected other Lender%' OR                                 
leadStatus like '%Pre-Approved%' OR                                 
leadStatus like '%Application Taken/Sent%' OR                                 
leadStatus like '%Application Received%' OR                                 
leadStatus like '%Submitted%' OR                                
leadStatus like '%Funded%' OR                                 
leadStatus like '%Future Opportunity%' OR                                 
leadStatus like '%Manager Review%' THEN 1 END ) leadContacted,         
COUNT
(CASE WHEN lead_id IS NOT NULL THEN 1 END ) leadsToEncompass ,          
COUNT(CASE WHEN loan_closeDate IS NOT NULL AND loan_closeDate !='1900-01-01 00:00:00' THEN 1 END ) leadsToEncompassClose,         
COUNT(CASE WHEN loan_FundedDate IS NOT NULL AND loan_FundedDate !='1900-01-01 00:00:00' THEN 1 END ) leadsToEncompassFunded  
FROM (fsbcorponline.leads360leads LEFT JOIN fsbcorponline.leads360campaigns ON fsbcorponline.leads360leads.CampaignId=fsbcorponline.leads360campaigns.CampaignId)  
LEFT JOIN fsbcorponline.leads_to_loan ON fsbcorponline.leads360leads.id =lead_id  
Where 1=1 AND dateAdded between '11/24/2012 08:59:00' and '12/24/2012 08:59:00'AND CampaignName like '%TFSB.com%'

尝试此
不同计数
即可

SELECT count(distinct A.ID) 
FROM `TABLE_A` A JOIN `TABLE_B` B ON (A.ID=B.ID) 
WHERE .....
既然你关心 只有匹配的记录,简单地
JOIN
就可以了,不需要
LEFT JOIN

SELECT CampaignName,fsbcorponline.leads360campaigns.CostPerLead, 
count( distinct fsbcorponline.leads360leads.id) leadCount,
count(
CASE WHEN leadStatus like '%Contact Attempt%' OR                                
leadStatus like '%Call Back/Follow-up%' OR                                 
leadStatus like '%Working%' OR                                 
leadStatus like '%Credit Pulled%' OR                                 
leadStatus like '%Selected other Lender%' OR                                 
leadStatus like '%Pre-Approved%' OR                                 
leadStatus like '%Application Taken/Sent%' OR                                 
leadStatus like '%Application Received%' OR                                 
leadStatus like '%Submitted%' OR                                
leadStatus like '%Funded%' OR                                 
leadStatus like '%Future Opportunity%' OR                                 
leadStatus like '%Manager Review%' THEN 1 END ) leadContacted,         
COUNT
(CASE WHEN lead_id IS NOT NULL THEN 1 END ) leadsToEncompass ,          
COUNT(CASE WHEN loan_closeDate IS NOT NULL AND loan_closeDate !='1900-01-01 00:00:00' THEN 1 END ) leadsToEncompassClose,         
COUNT(CASE WHEN loan_FundedDate IS NOT NULL AND loan_FundedDate !='1900-01-01 00:00:00' THEN 1 END ) leadsToEncompassFunded  
FROM (fsbcorponline.leads360leads LEFT JOIN fsbcorponline.leads360campaigns ON fsbcorponline.leads360leads.CampaignId=fsbcorponline.leads360campaigns.CampaignId)  
LEFT JOIN fsbcorponline.leads_to_loan ON fsbcorponline.leads360leads.id =lead_id  
Where 1=1 AND dateAdded between '11/24/2012 08:59:00' and '12/24/2012 08:59:00'AND CampaignName like '%TFSB.com%'

GROUP BY
子句可用于此目的:

SELECT COUNT(A.ID) 
FROM `TABLE_A` A LEFT JOIN `TABLE_B` B ON (A.ID=B.ID) 
WHERE .....
GROUP BY A.ID

GROUP BY
子句可用于此目的:

SELECT COUNT(A.ID) 
FROM `TABLE_A` A LEFT JOIN `TABLE_B` B ON (A.ID=B.ID) 
WHERE .....
GROUP BY A.ID

但是如果删除多余的行,为什么首先需要左连接?如果执行(不同的A.ID),则B上的任何WHERE条件(甚至删除B上的联接)都不会影响返回的结果。请查看添加的实际查询。@Champ:编辑查询并指定SELECT子句中的哪些列来自哪个表。但是如果删除额外的行,为什么首先需要左联接?如果是(不同的A.ID),则B上的任何WHERE条件(甚至删除B上的连接)不会影响返回的结果。请查看添加的实际查询。@Champ:编辑您的查询并指定SELECT子句中的哪些列来自哪个表。请查看添加的实际查询。@Champ尝试此操作,并让我知道您得到了什么,这将为我提供正确的
fsbcorponline.leads360 leads.id
计数,因为不同的我无法在
leadStatus
等字段中添加
distinct
。。。因此,问题仍然是如何限制联接以匹配一行。请查看添加的实际查询。@Champ请尝试此操作,并让我知道您得到了什么,它为我提供了正确的
fsbcorponline.leads360 leads.id的计数,因为不同。我无法在
leadStatus
等字段中添加
distinct
。。。因此,问题仍然是如何限制连接以匹配一行。请查看添加的实际查询。请查看添加的实际查询。