Try to join tables and want one record?









up vote
-1
down vote

favorite












I am using six table for users and I want to combine all table and show one result to show all values with some condition.



Following are my tables:



1) mls_stores



*----------------------------*
| store_id | store_title |
*----------------------------*
| 1001 | ajmar-jaipur |
| 1002 | dwarka-delhi |
*----------------------------*


2) mls_category



*-------------------------------------------*
| cat_no | store_id | cat_value | cat_type |
*-------------------------------------------*
| 20 | 1001 | 1 | running |
| 21 | 1001 | 4 | cycling |
| 22 | 1002 | 1 | running |
| 23 | 1002 | 2 | swmining |
*-------------------------------------------*


3) mls_points_matrix



*----------------------------------------*
| store_id | value_per_point | maxpoint |
*----------------------------------------*
| 1001 | 1 | 10 |
| 1001 | 2 | 20 |
| 1001 | 4 | 50 |
| 1002 | 1 | 20 |
| 1002 | 4 | 30 |
*----------------------------------------*


4) mls_user



*--------------------------*
| id | store_id | name |
*--------------------------*
| 1 | 1001 | sandeep |
| 2 | 1001 | jagveer |
| 3 | 1002 | gagan |
*--------------------------*


5) bonus_points



 *---------------------------------------------------*
| user_id | store_id | bonus_points | bonus_type |
*---------------------------------------------------*
| 1 | 1001 | 10 | fixed |
| 3 | 1002 | 2 | % |
*---------------------------------------------------*


6) mls_entry



*-------------------------------------------------------*
| user_id | store_id | category | distance | status |
*-------------------------------------------------------*
| 1 | 1001 | 20 | 20 | approved |
| 1 | 1001 | 21 | 40 | approved |
| 1 | 1001 | 20 | 5 | reject |
| 2 | 1001 | 21 | 40 | approved |
| 3 | 1002 | 22 | 10 | approved |
| 3 | 1002 | 23 | 20 | approved |
*-------------------------------------------------------*


Now I want output as below:



*-----------------------------------------------------------------------------------*
| Name | Entries | Points Earned | Bonus Points | Total Points | Total Amount |
*-----------------------------------------------------------------------------------*
| Sandeep | running(1) | 20 | 10 | 30 | 120 |
| | cycling(1) | | | | |
*-----------------------------------------------------------------------------------*
| Jagveer | cycling(1) | 10 | 0 | 10 | 10 |
*-----------------------------------------------------------------------------------*


I am using following code:



SELECT
u.name,
ROUND(COALESCE(t1.points, 0)) AS points,
ROUND(COALESCE(b.bonus_points, 0)) AS bonus_points,
ROUND(COALESCE(t1.points, 0) + COALESCE(b.bonus_points, 0)) AS total_points
FROM mls_user u
LEFT JOIN
(
SELECT e.user_id, e.status, SUM(e.distance / c.cat_value) AS points
FROM mls_entry e
INNER JOIN mls_category c
ON e.store_id = c.store_id AND e.category = c.cat_no
GROUP BY e.user_id
HAVING e.status='approved'
) t1
ON u.id = t1.user_id
LEFT JOIN bonus_points b
ON u.id = b.user_id
WHERE u.store_id = '1001'
ORDER BY
total_points DESC


Now, how do calculate total amount?



My total amount will be for Sandeep 30X4 (it is coming from point matrix) = 120. Same like for jagveer, the total amount for jagveer 10X2 = 20.










share|improve this question



















  • 1




    Whenever you have such a Broad Problem (too many tables); it is recommended that you provide us with either DDL statements for your tables, so that we can reproduce the case. Or, it would be even better if you can create a DB Fiddle or SQL Fiddle, and add that link to the question.
    – Madhur Bhaiya
    Nov 10 at 12:31










  • 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 11 at 5:58










  • Please refrain from abominations of English like "wanna". I have edited this out of your questions before. For the benefit of all future readers, and for readers whose first language is not English, we ask that everyone sticks to technical writing.
    – halfer
    Nov 17 at 12:01














up vote
-1
down vote

favorite












I am using six table for users and I want to combine all table and show one result to show all values with some condition.



Following are my tables:



1) mls_stores



*----------------------------*
| store_id | store_title |
*----------------------------*
| 1001 | ajmar-jaipur |
| 1002 | dwarka-delhi |
*----------------------------*


2) mls_category



*-------------------------------------------*
| cat_no | store_id | cat_value | cat_type |
*-------------------------------------------*
| 20 | 1001 | 1 | running |
| 21 | 1001 | 4 | cycling |
| 22 | 1002 | 1 | running |
| 23 | 1002 | 2 | swmining |
*-------------------------------------------*


3) mls_points_matrix



*----------------------------------------*
| store_id | value_per_point | maxpoint |
*----------------------------------------*
| 1001 | 1 | 10 |
| 1001 | 2 | 20 |
| 1001 | 4 | 50 |
| 1002 | 1 | 20 |
| 1002 | 4 | 30 |
*----------------------------------------*


4) mls_user



*--------------------------*
| id | store_id | name |
*--------------------------*
| 1 | 1001 | sandeep |
| 2 | 1001 | jagveer |
| 3 | 1002 | gagan |
*--------------------------*


5) bonus_points



 *---------------------------------------------------*
| user_id | store_id | bonus_points | bonus_type |
*---------------------------------------------------*
| 1 | 1001 | 10 | fixed |
| 3 | 1002 | 2 | % |
*---------------------------------------------------*


6) mls_entry



*-------------------------------------------------------*
| user_id | store_id | category | distance | status |
*-------------------------------------------------------*
| 1 | 1001 | 20 | 20 | approved |
| 1 | 1001 | 21 | 40 | approved |
| 1 | 1001 | 20 | 5 | reject |
| 2 | 1001 | 21 | 40 | approved |
| 3 | 1002 | 22 | 10 | approved |
| 3 | 1002 | 23 | 20 | approved |
*-------------------------------------------------------*


Now I want output as below:



*-----------------------------------------------------------------------------------*
| Name | Entries | Points Earned | Bonus Points | Total Points | Total Amount |
*-----------------------------------------------------------------------------------*
| Sandeep | running(1) | 20 | 10 | 30 | 120 |
| | cycling(1) | | | | |
*-----------------------------------------------------------------------------------*
| Jagveer | cycling(1) | 10 | 0 | 10 | 10 |
*-----------------------------------------------------------------------------------*


I am using following code:



SELECT
u.name,
ROUND(COALESCE(t1.points, 0)) AS points,
ROUND(COALESCE(b.bonus_points, 0)) AS bonus_points,
ROUND(COALESCE(t1.points, 0) + COALESCE(b.bonus_points, 0)) AS total_points
FROM mls_user u
LEFT JOIN
(
SELECT e.user_id, e.status, SUM(e.distance / c.cat_value) AS points
FROM mls_entry e
INNER JOIN mls_category c
ON e.store_id = c.store_id AND e.category = c.cat_no
GROUP BY e.user_id
HAVING e.status='approved'
) t1
ON u.id = t1.user_id
LEFT JOIN bonus_points b
ON u.id = b.user_id
WHERE u.store_id = '1001'
ORDER BY
total_points DESC


Now, how do calculate total amount?



My total amount will be for Sandeep 30X4 (it is coming from point matrix) = 120. Same like for jagveer, the total amount for jagveer 10X2 = 20.










share|improve this question



















  • 1




    Whenever you have such a Broad Problem (too many tables); it is recommended that you provide us with either DDL statements for your tables, so that we can reproduce the case. Or, it would be even better if you can create a DB Fiddle or SQL Fiddle, and add that link to the question.
    – Madhur Bhaiya
    Nov 10 at 12:31










  • 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 11 at 5:58










  • Please refrain from abominations of English like "wanna". I have edited this out of your questions before. For the benefit of all future readers, and for readers whose first language is not English, we ask that everyone sticks to technical writing.
    – halfer
    Nov 17 at 12:01












up vote
-1
down vote

favorite









up vote
-1
down vote

favorite











I am using six table for users and I want to combine all table and show one result to show all values with some condition.



Following are my tables:



1) mls_stores



*----------------------------*
| store_id | store_title |
*----------------------------*
| 1001 | ajmar-jaipur |
| 1002 | dwarka-delhi |
*----------------------------*


2) mls_category



*-------------------------------------------*
| cat_no | store_id | cat_value | cat_type |
*-------------------------------------------*
| 20 | 1001 | 1 | running |
| 21 | 1001 | 4 | cycling |
| 22 | 1002 | 1 | running |
| 23 | 1002 | 2 | swmining |
*-------------------------------------------*


3) mls_points_matrix



*----------------------------------------*
| store_id | value_per_point | maxpoint |
*----------------------------------------*
| 1001 | 1 | 10 |
| 1001 | 2 | 20 |
| 1001 | 4 | 50 |
| 1002 | 1 | 20 |
| 1002 | 4 | 30 |
*----------------------------------------*


4) mls_user



*--------------------------*
| id | store_id | name |
*--------------------------*
| 1 | 1001 | sandeep |
| 2 | 1001 | jagveer |
| 3 | 1002 | gagan |
*--------------------------*


5) bonus_points



 *---------------------------------------------------*
| user_id | store_id | bonus_points | bonus_type |
*---------------------------------------------------*
| 1 | 1001 | 10 | fixed |
| 3 | 1002 | 2 | % |
*---------------------------------------------------*


6) mls_entry



*-------------------------------------------------------*
| user_id | store_id | category | distance | status |
*-------------------------------------------------------*
| 1 | 1001 | 20 | 20 | approved |
| 1 | 1001 | 21 | 40 | approved |
| 1 | 1001 | 20 | 5 | reject |
| 2 | 1001 | 21 | 40 | approved |
| 3 | 1002 | 22 | 10 | approved |
| 3 | 1002 | 23 | 20 | approved |
*-------------------------------------------------------*


Now I want output as below:



*-----------------------------------------------------------------------------------*
| Name | Entries | Points Earned | Bonus Points | Total Points | Total Amount |
*-----------------------------------------------------------------------------------*
| Sandeep | running(1) | 20 | 10 | 30 | 120 |
| | cycling(1) | | | | |
*-----------------------------------------------------------------------------------*
| Jagveer | cycling(1) | 10 | 0 | 10 | 10 |
*-----------------------------------------------------------------------------------*


I am using following code:



SELECT
u.name,
ROUND(COALESCE(t1.points, 0)) AS points,
ROUND(COALESCE(b.bonus_points, 0)) AS bonus_points,
ROUND(COALESCE(t1.points, 0) + COALESCE(b.bonus_points, 0)) AS total_points
FROM mls_user u
LEFT JOIN
(
SELECT e.user_id, e.status, SUM(e.distance / c.cat_value) AS points
FROM mls_entry e
INNER JOIN mls_category c
ON e.store_id = c.store_id AND e.category = c.cat_no
GROUP BY e.user_id
HAVING e.status='approved'
) t1
ON u.id = t1.user_id
LEFT JOIN bonus_points b
ON u.id = b.user_id
WHERE u.store_id = '1001'
ORDER BY
total_points DESC


Now, how do calculate total amount?



My total amount will be for Sandeep 30X4 (it is coming from point matrix) = 120. Same like for jagveer, the total amount for jagveer 10X2 = 20.










share|improve this question















I am using six table for users and I want to combine all table and show one result to show all values with some condition.



Following are my tables:



1) mls_stores



*----------------------------*
| store_id | store_title |
*----------------------------*
| 1001 | ajmar-jaipur |
| 1002 | dwarka-delhi |
*----------------------------*


2) mls_category



*-------------------------------------------*
| cat_no | store_id | cat_value | cat_type |
*-------------------------------------------*
| 20 | 1001 | 1 | running |
| 21 | 1001 | 4 | cycling |
| 22 | 1002 | 1 | running |
| 23 | 1002 | 2 | swmining |
*-------------------------------------------*


3) mls_points_matrix



*----------------------------------------*
| store_id | value_per_point | maxpoint |
*----------------------------------------*
| 1001 | 1 | 10 |
| 1001 | 2 | 20 |
| 1001 | 4 | 50 |
| 1002 | 1 | 20 |
| 1002 | 4 | 30 |
*----------------------------------------*


4) mls_user



*--------------------------*
| id | store_id | name |
*--------------------------*
| 1 | 1001 | sandeep |
| 2 | 1001 | jagveer |
| 3 | 1002 | gagan |
*--------------------------*


5) bonus_points



 *---------------------------------------------------*
| user_id | store_id | bonus_points | bonus_type |
*---------------------------------------------------*
| 1 | 1001 | 10 | fixed |
| 3 | 1002 | 2 | % |
*---------------------------------------------------*


6) mls_entry



*-------------------------------------------------------*
| user_id | store_id | category | distance | status |
*-------------------------------------------------------*
| 1 | 1001 | 20 | 20 | approved |
| 1 | 1001 | 21 | 40 | approved |
| 1 | 1001 | 20 | 5 | reject |
| 2 | 1001 | 21 | 40 | approved |
| 3 | 1002 | 22 | 10 | approved |
| 3 | 1002 | 23 | 20 | approved |
*-------------------------------------------------------*


Now I want output as below:



*-----------------------------------------------------------------------------------*
| Name | Entries | Points Earned | Bonus Points | Total Points | Total Amount |
*-----------------------------------------------------------------------------------*
| Sandeep | running(1) | 20 | 10 | 30 | 120 |
| | cycling(1) | | | | |
*-----------------------------------------------------------------------------------*
| Jagveer | cycling(1) | 10 | 0 | 10 | 10 |
*-----------------------------------------------------------------------------------*


I am using following code:



SELECT
u.name,
ROUND(COALESCE(t1.points, 0)) AS points,
ROUND(COALESCE(b.bonus_points, 0)) AS bonus_points,
ROUND(COALESCE(t1.points, 0) + COALESCE(b.bonus_points, 0)) AS total_points
FROM mls_user u
LEFT JOIN
(
SELECT e.user_id, e.status, SUM(e.distance / c.cat_value) AS points
FROM mls_entry e
INNER JOIN mls_category c
ON e.store_id = c.store_id AND e.category = c.cat_no
GROUP BY e.user_id
HAVING e.status='approved'
) t1
ON u.id = t1.user_id
LEFT JOIN bonus_points b
ON u.id = b.user_id
WHERE u.store_id = '1001'
ORDER BY
total_points DESC


Now, how do calculate total amount?



My total amount will be for Sandeep 30X4 (it is coming from point matrix) = 120. Same like for jagveer, the total amount for jagveer 10X2 = 20.







mysql mysqli






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 17 at 12:02









halfer

14.2k758106




14.2k758106










asked Nov 10 at 12:05









Santosh Khatri

15713




15713







  • 1




    Whenever you have such a Broad Problem (too many tables); it is recommended that you provide us with either DDL statements for your tables, so that we can reproduce the case. Or, it would be even better if you can create a DB Fiddle or SQL Fiddle, and add that link to the question.
    – Madhur Bhaiya
    Nov 10 at 12:31










  • 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 11 at 5:58










  • Please refrain from abominations of English like "wanna". I have edited this out of your questions before. For the benefit of all future readers, and for readers whose first language is not English, we ask that everyone sticks to technical writing.
    – halfer
    Nov 17 at 12:01












  • 1




    Whenever you have such a Broad Problem (too many tables); it is recommended that you provide us with either DDL statements for your tables, so that we can reproduce the case. Or, it would be even better if you can create a DB Fiddle or SQL Fiddle, and add that link to the question.
    – Madhur Bhaiya
    Nov 10 at 12:31










  • 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 11 at 5:58










  • Please refrain from abominations of English like "wanna". I have edited this out of your questions before. For the benefit of all future readers, and for readers whose first language is not English, we ask that everyone sticks to technical writing.
    – halfer
    Nov 17 at 12:01







1




1




Whenever you have such a Broad Problem (too many tables); it is recommended that you provide us with either DDL statements for your tables, so that we can reproduce the case. Or, it would be even better if you can create a DB Fiddle or SQL Fiddle, and add that link to the question.
– Madhur Bhaiya
Nov 10 at 12:31




Whenever you have such a Broad Problem (too many tables); it is recommended that you provide us with either DDL statements for your tables, so that we can reproduce the case. Or, it would be even better if you can create a DB Fiddle or SQL Fiddle, and add that link to the question.
– Madhur Bhaiya
Nov 10 at 12:31












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 11 at 5:58




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 11 at 5:58












Please refrain from abominations of English like "wanna". I have edited this out of your questions before. For the benefit of all future readers, and for readers whose first language is not English, we ask that everyone sticks to technical writing.
– halfer
Nov 17 at 12:01




Please refrain from abominations of English like "wanna". I have edited this out of your questions before. For the benefit of all future readers, and for readers whose first language is not English, we ask that everyone sticks to technical writing.
– halfer
Nov 17 at 12:01

















active

oldest

votes











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',
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%2f53238765%2ftry-to-join-tables-and-want-one-record%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes















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.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • 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%2f53238765%2ftry-to-join-tables-and-want-one-record%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

How to how show current date and time by default on contact form 7 in WordPress without taking input from user in datetimepicker

Syphilis

Darth Vader #20