Best Fit data retrial using left Join in MySQL












0















Below is something I am trying to achieve.



Data from 3 different files are loaded into a single table in which I need to categorize the data based on the names, and check for the best fit of the data across all rows.



The same name can have a maximum of 3 occurrences inside the table and a minimum of 1.



The data comparison should happen on all 3 rows or 2 rows (If the name did not come from one source) if there are more than one occurrences for a given name. If there is only 1 row for a given name that should be taken as the default value.



This is my attempt.



select 
case
when (coalesce(length(A.x_manufacturer),0) > coalesce(length(B.x_manufacturer),0) AND coalesce(length(A.x_manufacturer),0) > coalesce(length(C.x_manufacturer),0)) then A.x_manufacturer
when (coalesce(length(B.x_manufacturer),0) > coalesce(length(A.x_manufacturer),0) AND coalesce(length(B.x_manufacturer),0) > coalesce(length(C.x_manufacturer),0)) then B.x_manufacturer
when (coalesce(length(C.x_manufacturer),0) > coalesce(length(A.x_manufacturer),0) AND coalesce(length(C.x_manufacturer),0) > coalesce(length(B.x_manufacturer),0)) then C.x_manufacturer
else C.x_manufacturer end as Best_Fit_x_manufacturer
from tbl1 A left outer join tbl1 B on
A.name = B.name
left outer join tbl1 C on C.name = B.name
where A.sourceid=1 and B.sourceid=2 and C.sourceid=3 group by
C.name


Sample Data in Table:



Name  ManuFacturer source
A AB 1
A ABC 2
A ABCD 3
B BC 1


Expected Output



Name      ManuFacturer source
A ABCD 3
B BC 1









share|improve this question




















  • 1





    Please provide a relevant and minimal sample data showcasing your requirements, and expected output. Refer this link on how to frame a good SQL question: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

    – Madhur Bhaiya
    Nov 15 '18 at 8:58











  • Hi. This is a faq. Please always google many clear, concise & specific versions/phrasings of your question/problem/goal with & without your particular strings/names & read many answers. Add relevant keywords you discover to your searches. If you don't find an answer then post, using 1 variant search as title & keywords for tags. See the downvote arrow mouseover text. When you do have a non-duplicate code question to post please read & act on Minimal, Complete, and Verifiable example.

    – philipxy
    Nov 15 '18 at 10:19











  • Learn what LEFT/RIGHT JOIN returns: INNER JOIN rows plus unmatched left/right table rows extended by NULLs. FULL JOIN returns INNER JOIN rows UNION ALL unmatched left & right table rows extended by NULLs. Always know what INNER JOIN you want as part of an OUTER JOIN. A WHERE or INNER ON that requires a possibly NULL-extended column to be not NULL after an OUTER JOIN ON removes any rows extended by NULLs, ie leaves only INNER JOIN rows, ie "turns an OUTER JOIN into an INNER JOIN". You have that.

    – philipxy
    Nov 15 '18 at 10:20













  • Possible duplicate of Left Outer Join Not Working?

    – philipxy
    Nov 15 '18 at 10:21











  • Possible duplicate of How to do a FULL OUTER JOIN in MySQL?

    – philipxy
    Nov 15 '18 at 10:27
















0















Below is something I am trying to achieve.



Data from 3 different files are loaded into a single table in which I need to categorize the data based on the names, and check for the best fit of the data across all rows.



The same name can have a maximum of 3 occurrences inside the table and a minimum of 1.



The data comparison should happen on all 3 rows or 2 rows (If the name did not come from one source) if there are more than one occurrences for a given name. If there is only 1 row for a given name that should be taken as the default value.



This is my attempt.



select 
case
when (coalesce(length(A.x_manufacturer),0) > coalesce(length(B.x_manufacturer),0) AND coalesce(length(A.x_manufacturer),0) > coalesce(length(C.x_manufacturer),0)) then A.x_manufacturer
when (coalesce(length(B.x_manufacturer),0) > coalesce(length(A.x_manufacturer),0) AND coalesce(length(B.x_manufacturer),0) > coalesce(length(C.x_manufacturer),0)) then B.x_manufacturer
when (coalesce(length(C.x_manufacturer),0) > coalesce(length(A.x_manufacturer),0) AND coalesce(length(C.x_manufacturer),0) > coalesce(length(B.x_manufacturer),0)) then C.x_manufacturer
else C.x_manufacturer end as Best_Fit_x_manufacturer
from tbl1 A left outer join tbl1 B on
A.name = B.name
left outer join tbl1 C on C.name = B.name
where A.sourceid=1 and B.sourceid=2 and C.sourceid=3 group by
C.name


Sample Data in Table:



Name  ManuFacturer source
A AB 1
A ABC 2
A ABCD 3
B BC 1


Expected Output



Name      ManuFacturer source
A ABCD 3
B BC 1









share|improve this question




















  • 1





    Please provide a relevant and minimal sample data showcasing your requirements, and expected output. Refer this link on how to frame a good SQL question: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

    – Madhur Bhaiya
    Nov 15 '18 at 8:58











  • Hi. This is a faq. Please always google many clear, concise & specific versions/phrasings of your question/problem/goal with & without your particular strings/names & read many answers. Add relevant keywords you discover to your searches. If you don't find an answer then post, using 1 variant search as title & keywords for tags. See the downvote arrow mouseover text. When you do have a non-duplicate code question to post please read & act on Minimal, Complete, and Verifiable example.

    – philipxy
    Nov 15 '18 at 10:19











  • Learn what LEFT/RIGHT JOIN returns: INNER JOIN rows plus unmatched left/right table rows extended by NULLs. FULL JOIN returns INNER JOIN rows UNION ALL unmatched left & right table rows extended by NULLs. Always know what INNER JOIN you want as part of an OUTER JOIN. A WHERE or INNER ON that requires a possibly NULL-extended column to be not NULL after an OUTER JOIN ON removes any rows extended by NULLs, ie leaves only INNER JOIN rows, ie "turns an OUTER JOIN into an INNER JOIN". You have that.

    – philipxy
    Nov 15 '18 at 10:20













  • Possible duplicate of Left Outer Join Not Working?

    – philipxy
    Nov 15 '18 at 10:21











  • Possible duplicate of How to do a FULL OUTER JOIN in MySQL?

    – philipxy
    Nov 15 '18 at 10:27














0












0








0








Below is something I am trying to achieve.



Data from 3 different files are loaded into a single table in which I need to categorize the data based on the names, and check for the best fit of the data across all rows.



The same name can have a maximum of 3 occurrences inside the table and a minimum of 1.



The data comparison should happen on all 3 rows or 2 rows (If the name did not come from one source) if there are more than one occurrences for a given name. If there is only 1 row for a given name that should be taken as the default value.



This is my attempt.



select 
case
when (coalesce(length(A.x_manufacturer),0) > coalesce(length(B.x_manufacturer),0) AND coalesce(length(A.x_manufacturer),0) > coalesce(length(C.x_manufacturer),0)) then A.x_manufacturer
when (coalesce(length(B.x_manufacturer),0) > coalesce(length(A.x_manufacturer),0) AND coalesce(length(B.x_manufacturer),0) > coalesce(length(C.x_manufacturer),0)) then B.x_manufacturer
when (coalesce(length(C.x_manufacturer),0) > coalesce(length(A.x_manufacturer),0) AND coalesce(length(C.x_manufacturer),0) > coalesce(length(B.x_manufacturer),0)) then C.x_manufacturer
else C.x_manufacturer end as Best_Fit_x_manufacturer
from tbl1 A left outer join tbl1 B on
A.name = B.name
left outer join tbl1 C on C.name = B.name
where A.sourceid=1 and B.sourceid=2 and C.sourceid=3 group by
C.name


Sample Data in Table:



Name  ManuFacturer source
A AB 1
A ABC 2
A ABCD 3
B BC 1


Expected Output



Name      ManuFacturer source
A ABCD 3
B BC 1









share|improve this question
















Below is something I am trying to achieve.



Data from 3 different files are loaded into a single table in which I need to categorize the data based on the names, and check for the best fit of the data across all rows.



The same name can have a maximum of 3 occurrences inside the table and a minimum of 1.



The data comparison should happen on all 3 rows or 2 rows (If the name did not come from one source) if there are more than one occurrences for a given name. If there is only 1 row for a given name that should be taken as the default value.



This is my attempt.



select 
case
when (coalesce(length(A.x_manufacturer),0) > coalesce(length(B.x_manufacturer),0) AND coalesce(length(A.x_manufacturer),0) > coalesce(length(C.x_manufacturer),0)) then A.x_manufacturer
when (coalesce(length(B.x_manufacturer),0) > coalesce(length(A.x_manufacturer),0) AND coalesce(length(B.x_manufacturer),0) > coalesce(length(C.x_manufacturer),0)) then B.x_manufacturer
when (coalesce(length(C.x_manufacturer),0) > coalesce(length(A.x_manufacturer),0) AND coalesce(length(C.x_manufacturer),0) > coalesce(length(B.x_manufacturer),0)) then C.x_manufacturer
else C.x_manufacturer end as Best_Fit_x_manufacturer
from tbl1 A left outer join tbl1 B on
A.name = B.name
left outer join tbl1 C on C.name = B.name
where A.sourceid=1 and B.sourceid=2 and C.sourceid=3 group by
C.name


Sample Data in Table:



Name  ManuFacturer source
A AB 1
A ABC 2
A ABCD 3
B BC 1


Expected Output



Name      ManuFacturer source
A ABCD 3
B BC 1






mysql sql database join data-warehouse






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 15 '18 at 15:49









KevinO

3,15131730




3,15131730










asked Nov 15 '18 at 8:56









KarivadhaKarivadha

61




61








  • 1





    Please provide a relevant and minimal sample data showcasing your requirements, and expected output. Refer this link on how to frame a good SQL question: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

    – Madhur Bhaiya
    Nov 15 '18 at 8:58











  • Hi. This is a faq. Please always google many clear, concise & specific versions/phrasings of your question/problem/goal with & without your particular strings/names & read many answers. Add relevant keywords you discover to your searches. If you don't find an answer then post, using 1 variant search as title & keywords for tags. See the downvote arrow mouseover text. When you do have a non-duplicate code question to post please read & act on Minimal, Complete, and Verifiable example.

    – philipxy
    Nov 15 '18 at 10:19











  • Learn what LEFT/RIGHT JOIN returns: INNER JOIN rows plus unmatched left/right table rows extended by NULLs. FULL JOIN returns INNER JOIN rows UNION ALL unmatched left & right table rows extended by NULLs. Always know what INNER JOIN you want as part of an OUTER JOIN. A WHERE or INNER ON that requires a possibly NULL-extended column to be not NULL after an OUTER JOIN ON removes any rows extended by NULLs, ie leaves only INNER JOIN rows, ie "turns an OUTER JOIN into an INNER JOIN". You have that.

    – philipxy
    Nov 15 '18 at 10:20













  • Possible duplicate of Left Outer Join Not Working?

    – philipxy
    Nov 15 '18 at 10:21











  • Possible duplicate of How to do a FULL OUTER JOIN in MySQL?

    – philipxy
    Nov 15 '18 at 10:27














  • 1





    Please provide a relevant and minimal sample data showcasing your requirements, and expected output. Refer this link on how to frame a good SQL question: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

    – Madhur Bhaiya
    Nov 15 '18 at 8:58











  • Hi. This is a faq. Please always google many clear, concise & specific versions/phrasings of your question/problem/goal with & without your particular strings/names & read many answers. Add relevant keywords you discover to your searches. If you don't find an answer then post, using 1 variant search as title & keywords for tags. See the downvote arrow mouseover text. When you do have a non-duplicate code question to post please read & act on Minimal, Complete, and Verifiable example.

    – philipxy
    Nov 15 '18 at 10:19











  • Learn what LEFT/RIGHT JOIN returns: INNER JOIN rows plus unmatched left/right table rows extended by NULLs. FULL JOIN returns INNER JOIN rows UNION ALL unmatched left & right table rows extended by NULLs. Always know what INNER JOIN you want as part of an OUTER JOIN. A WHERE or INNER ON that requires a possibly NULL-extended column to be not NULL after an OUTER JOIN ON removes any rows extended by NULLs, ie leaves only INNER JOIN rows, ie "turns an OUTER JOIN into an INNER JOIN". You have that.

    – philipxy
    Nov 15 '18 at 10:20













  • Possible duplicate of Left Outer Join Not Working?

    – philipxy
    Nov 15 '18 at 10:21











  • Possible duplicate of How to do a FULL OUTER JOIN in MySQL?

    – philipxy
    Nov 15 '18 at 10:27








1




1





Please provide a relevant and minimal sample data showcasing your requirements, and expected output. Refer this link on how to frame a good SQL question: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

– Madhur Bhaiya
Nov 15 '18 at 8:58





Please provide a relevant and minimal sample data showcasing your requirements, and expected output. Refer this link on how to frame a good SQL question: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

– Madhur Bhaiya
Nov 15 '18 at 8:58













Hi. This is a faq. Please always google many clear, concise & specific versions/phrasings of your question/problem/goal with & without your particular strings/names & read many answers. Add relevant keywords you discover to your searches. If you don't find an answer then post, using 1 variant search as title & keywords for tags. See the downvote arrow mouseover text. When you do have a non-duplicate code question to post please read & act on Minimal, Complete, and Verifiable example.

– philipxy
Nov 15 '18 at 10:19





Hi. This is a faq. Please always google many clear, concise & specific versions/phrasings of your question/problem/goal with & without your particular strings/names & read many answers. Add relevant keywords you discover to your searches. If you don't find an answer then post, using 1 variant search as title & keywords for tags. See the downvote arrow mouseover text. When you do have a non-duplicate code question to post please read & act on Minimal, Complete, and Verifiable example.

– philipxy
Nov 15 '18 at 10:19













Learn what LEFT/RIGHT JOIN returns: INNER JOIN rows plus unmatched left/right table rows extended by NULLs. FULL JOIN returns INNER JOIN rows UNION ALL unmatched left & right table rows extended by NULLs. Always know what INNER JOIN you want as part of an OUTER JOIN. A WHERE or INNER ON that requires a possibly NULL-extended column to be not NULL after an OUTER JOIN ON removes any rows extended by NULLs, ie leaves only INNER JOIN rows, ie "turns an OUTER JOIN into an INNER JOIN". You have that.

– philipxy
Nov 15 '18 at 10:20







Learn what LEFT/RIGHT JOIN returns: INNER JOIN rows plus unmatched left/right table rows extended by NULLs. FULL JOIN returns INNER JOIN rows UNION ALL unmatched left & right table rows extended by NULLs. Always know what INNER JOIN you want as part of an OUTER JOIN. A WHERE or INNER ON that requires a possibly NULL-extended column to be not NULL after an OUTER JOIN ON removes any rows extended by NULLs, ie leaves only INNER JOIN rows, ie "turns an OUTER JOIN into an INNER JOIN". You have that.

– philipxy
Nov 15 '18 at 10:20















Possible duplicate of Left Outer Join Not Working?

– philipxy
Nov 15 '18 at 10:21





Possible duplicate of Left Outer Join Not Working?

– philipxy
Nov 15 '18 at 10:21













Possible duplicate of How to do a FULL OUTER JOIN in MySQL?

– philipxy
Nov 15 '18 at 10:27





Possible duplicate of How to do a FULL OUTER JOIN in MySQL?

– philipxy
Nov 15 '18 at 10:27












1 Answer
1






active

oldest

votes


















2














As soon as you put a solid condition on an outer joined table, into the WHERE clause, the join reverts to INNER join behavior:



from 
tbl1 A
left outer join tbl1 B on A.name = B.name
left outer join tbl1 C on C.name = B.name
where
A.sourceid=1 and
B.sourceid=2 and --wrong; this will cause A outer join B to become an INNER join
C.sourceid=3 --wrong; this will cause B outer join C to become an INNER join


Put your clauses in the ON instead:



from 
tbl1 A
left outer join tbl1 B on A.name = B.name AND B.sourceid=2
left outer join tbl1 C on C.name = B.name AND C.sourceid=3
where
A.sourceid=1


The reason why is:



Outer joins generate NULLs in every column if there's no match between rows, hence B.sourceid might well be null in some rows of the result set. Specifying WHERE B.sourceid=2 causes all the rows where sourceid is null, to disappear, because 2 is not equal to null (nothing is equal to null). This means the only rows that you can possibly get out of it is rows where there IS a match.. Which is an inner join






share|improve this answer


























  • Thanks Caius, it worked :)

    – Karivadha
    Nov 15 '18 at 10:34











  • @Karivadha Please see: How to accept an answer for closure. Thanks :)

    – Madhur Bhaiya
    Nov 15 '18 at 11:48











  • One more doubt Caius, What if there are no rows for A.source_id=1 and we have data for B and C?

    – Karivadha
    Nov 15 '18 at 11:48











  • Then you'll get no rows. By saying A left join B youre declaring A as your solid source of data onto which you want to attach other possibly matching data. If A might have no matches then you need to FULL OUTER JOIN everything, and don't forget to move the WHERE a.sourceid = 1 out of the where clause and into the ON

    – Caius Jard
    Nov 15 '18 at 14:56











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53315632%2fbest-fit-data-retrial-using-left-join-in-mysql%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









2














As soon as you put a solid condition on an outer joined table, into the WHERE clause, the join reverts to INNER join behavior:



from 
tbl1 A
left outer join tbl1 B on A.name = B.name
left outer join tbl1 C on C.name = B.name
where
A.sourceid=1 and
B.sourceid=2 and --wrong; this will cause A outer join B to become an INNER join
C.sourceid=3 --wrong; this will cause B outer join C to become an INNER join


Put your clauses in the ON instead:



from 
tbl1 A
left outer join tbl1 B on A.name = B.name AND B.sourceid=2
left outer join tbl1 C on C.name = B.name AND C.sourceid=3
where
A.sourceid=1


The reason why is:



Outer joins generate NULLs in every column if there's no match between rows, hence B.sourceid might well be null in some rows of the result set. Specifying WHERE B.sourceid=2 causes all the rows where sourceid is null, to disappear, because 2 is not equal to null (nothing is equal to null). This means the only rows that you can possibly get out of it is rows where there IS a match.. Which is an inner join






share|improve this answer


























  • Thanks Caius, it worked :)

    – Karivadha
    Nov 15 '18 at 10:34











  • @Karivadha Please see: How to accept an answer for closure. Thanks :)

    – Madhur Bhaiya
    Nov 15 '18 at 11:48











  • One more doubt Caius, What if there are no rows for A.source_id=1 and we have data for B and C?

    – Karivadha
    Nov 15 '18 at 11:48











  • Then you'll get no rows. By saying A left join B youre declaring A as your solid source of data onto which you want to attach other possibly matching data. If A might have no matches then you need to FULL OUTER JOIN everything, and don't forget to move the WHERE a.sourceid = 1 out of the where clause and into the ON

    – Caius Jard
    Nov 15 '18 at 14:56
















2














As soon as you put a solid condition on an outer joined table, into the WHERE clause, the join reverts to INNER join behavior:



from 
tbl1 A
left outer join tbl1 B on A.name = B.name
left outer join tbl1 C on C.name = B.name
where
A.sourceid=1 and
B.sourceid=2 and --wrong; this will cause A outer join B to become an INNER join
C.sourceid=3 --wrong; this will cause B outer join C to become an INNER join


Put your clauses in the ON instead:



from 
tbl1 A
left outer join tbl1 B on A.name = B.name AND B.sourceid=2
left outer join tbl1 C on C.name = B.name AND C.sourceid=3
where
A.sourceid=1


The reason why is:



Outer joins generate NULLs in every column if there's no match between rows, hence B.sourceid might well be null in some rows of the result set. Specifying WHERE B.sourceid=2 causes all the rows where sourceid is null, to disappear, because 2 is not equal to null (nothing is equal to null). This means the only rows that you can possibly get out of it is rows where there IS a match.. Which is an inner join






share|improve this answer


























  • Thanks Caius, it worked :)

    – Karivadha
    Nov 15 '18 at 10:34











  • @Karivadha Please see: How to accept an answer for closure. Thanks :)

    – Madhur Bhaiya
    Nov 15 '18 at 11:48











  • One more doubt Caius, What if there are no rows for A.source_id=1 and we have data for B and C?

    – Karivadha
    Nov 15 '18 at 11:48











  • Then you'll get no rows. By saying A left join B youre declaring A as your solid source of data onto which you want to attach other possibly matching data. If A might have no matches then you need to FULL OUTER JOIN everything, and don't forget to move the WHERE a.sourceid = 1 out of the where clause and into the ON

    – Caius Jard
    Nov 15 '18 at 14:56














2












2








2







As soon as you put a solid condition on an outer joined table, into the WHERE clause, the join reverts to INNER join behavior:



from 
tbl1 A
left outer join tbl1 B on A.name = B.name
left outer join tbl1 C on C.name = B.name
where
A.sourceid=1 and
B.sourceid=2 and --wrong; this will cause A outer join B to become an INNER join
C.sourceid=3 --wrong; this will cause B outer join C to become an INNER join


Put your clauses in the ON instead:



from 
tbl1 A
left outer join tbl1 B on A.name = B.name AND B.sourceid=2
left outer join tbl1 C on C.name = B.name AND C.sourceid=3
where
A.sourceid=1


The reason why is:



Outer joins generate NULLs in every column if there's no match between rows, hence B.sourceid might well be null in some rows of the result set. Specifying WHERE B.sourceid=2 causes all the rows where sourceid is null, to disappear, because 2 is not equal to null (nothing is equal to null). This means the only rows that you can possibly get out of it is rows where there IS a match.. Which is an inner join






share|improve this answer















As soon as you put a solid condition on an outer joined table, into the WHERE clause, the join reverts to INNER join behavior:



from 
tbl1 A
left outer join tbl1 B on A.name = B.name
left outer join tbl1 C on C.name = B.name
where
A.sourceid=1 and
B.sourceid=2 and --wrong; this will cause A outer join B to become an INNER join
C.sourceid=3 --wrong; this will cause B outer join C to become an INNER join


Put your clauses in the ON instead:



from 
tbl1 A
left outer join tbl1 B on A.name = B.name AND B.sourceid=2
left outer join tbl1 C on C.name = B.name AND C.sourceid=3
where
A.sourceid=1


The reason why is:



Outer joins generate NULLs in every column if there's no match between rows, hence B.sourceid might well be null in some rows of the result set. Specifying WHERE B.sourceid=2 causes all the rows where sourceid is null, to disappear, because 2 is not equal to null (nothing is equal to null). This means the only rows that you can possibly get out of it is rows where there IS a match.. Which is an inner join







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 15 '18 at 11:07

























answered Nov 15 '18 at 9:52









Caius JardCaius Jard

12k21240




12k21240













  • Thanks Caius, it worked :)

    – Karivadha
    Nov 15 '18 at 10:34











  • @Karivadha Please see: How to accept an answer for closure. Thanks :)

    – Madhur Bhaiya
    Nov 15 '18 at 11:48











  • One more doubt Caius, What if there are no rows for A.source_id=1 and we have data for B and C?

    – Karivadha
    Nov 15 '18 at 11:48











  • Then you'll get no rows. By saying A left join B youre declaring A as your solid source of data onto which you want to attach other possibly matching data. If A might have no matches then you need to FULL OUTER JOIN everything, and don't forget to move the WHERE a.sourceid = 1 out of the where clause and into the ON

    – Caius Jard
    Nov 15 '18 at 14:56



















  • Thanks Caius, it worked :)

    – Karivadha
    Nov 15 '18 at 10:34











  • @Karivadha Please see: How to accept an answer for closure. Thanks :)

    – Madhur Bhaiya
    Nov 15 '18 at 11:48











  • One more doubt Caius, What if there are no rows for A.source_id=1 and we have data for B and C?

    – Karivadha
    Nov 15 '18 at 11:48











  • Then you'll get no rows. By saying A left join B youre declaring A as your solid source of data onto which you want to attach other possibly matching data. If A might have no matches then you need to FULL OUTER JOIN everything, and don't forget to move the WHERE a.sourceid = 1 out of the where clause and into the ON

    – Caius Jard
    Nov 15 '18 at 14:56

















Thanks Caius, it worked :)

– Karivadha
Nov 15 '18 at 10:34





Thanks Caius, it worked :)

– Karivadha
Nov 15 '18 at 10:34













@Karivadha Please see: How to accept an answer for closure. Thanks :)

– Madhur Bhaiya
Nov 15 '18 at 11:48





@Karivadha Please see: How to accept an answer for closure. Thanks :)

– Madhur Bhaiya
Nov 15 '18 at 11:48













One more doubt Caius, What if there are no rows for A.source_id=1 and we have data for B and C?

– Karivadha
Nov 15 '18 at 11:48





One more doubt Caius, What if there are no rows for A.source_id=1 and we have data for B and C?

– Karivadha
Nov 15 '18 at 11:48













Then you'll get no rows. By saying A left join B youre declaring A as your solid source of data onto which you want to attach other possibly matching data. If A might have no matches then you need to FULL OUTER JOIN everything, and don't forget to move the WHERE a.sourceid = 1 out of the where clause and into the ON

– Caius Jard
Nov 15 '18 at 14:56





Then you'll get no rows. By saying A left join B youre declaring A as your solid source of data onto which you want to attach other possibly matching data. If A might have no matches then you need to FULL OUTER JOIN everything, and don't forget to move the WHERE a.sourceid = 1 out of the where clause and into the ON

– Caius Jard
Nov 15 '18 at 14:56




















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53315632%2fbest-fit-data-retrial-using-left-join-in-mysql%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Xamarin.iOS Cant Deploy on Iphone

Glorious Revolution

Dulmage-Mendelsohn matrix decomposition in Python