MySQL a query from two tables
I have 2 tables created with SQL. The first one has an unique id and a name of a provider. The second one has a product name, the amount of that product and the id of the provider.
I need a query that gives me the name of each provider and the total sum of the product amount that they have.
Ex:
CREATE TABLE IF NOT EXISTS provider
(id int unique auto_increment primary key,
name char(50));
CREATE TABLE IF NOT EXISTS product
(id int unique auto_increment primary key,
name char(30),
provider_id int NOT NULL,
amount int NOT NULL);
Provider: (id, name)
1 Mike
2 Peter
3 John
Product: (id, name, provider_id, amount)
1 RedCar 1 100
2 BlueCar 1 50
3 RedCar 3 35
4 OrangeCar 2 500
5 GreenCar 3 250
Query:
Mike 150
Peter 500
John 285
mysql
add a comment |
I have 2 tables created with SQL. The first one has an unique id and a name of a provider. The second one has a product name, the amount of that product and the id of the provider.
I need a query that gives me the name of each provider and the total sum of the product amount that they have.
Ex:
CREATE TABLE IF NOT EXISTS provider
(id int unique auto_increment primary key,
name char(50));
CREATE TABLE IF NOT EXISTS product
(id int unique auto_increment primary key,
name char(30),
provider_id int NOT NULL,
amount int NOT NULL);
Provider: (id, name)
1 Mike
2 Peter
3 John
Product: (id, name, provider_id, amount)
1 RedCar 1 100
2 BlueCar 1 50
3 RedCar 3 35
4 OrangeCar 2 500
5 GreenCar 3 250
Query:
Mike 150
Peter 500
John 285
mysql
try this stackoverflow.com/questions/10687773/…
– unos baghaii
Nov 13 '18 at 13:10
add a comment |
I have 2 tables created with SQL. The first one has an unique id and a name of a provider. The second one has a product name, the amount of that product and the id of the provider.
I need a query that gives me the name of each provider and the total sum of the product amount that they have.
Ex:
CREATE TABLE IF NOT EXISTS provider
(id int unique auto_increment primary key,
name char(50));
CREATE TABLE IF NOT EXISTS product
(id int unique auto_increment primary key,
name char(30),
provider_id int NOT NULL,
amount int NOT NULL);
Provider: (id, name)
1 Mike
2 Peter
3 John
Product: (id, name, provider_id, amount)
1 RedCar 1 100
2 BlueCar 1 50
3 RedCar 3 35
4 OrangeCar 2 500
5 GreenCar 3 250
Query:
Mike 150
Peter 500
John 285
mysql
I have 2 tables created with SQL. The first one has an unique id and a name of a provider. The second one has a product name, the amount of that product and the id of the provider.
I need a query that gives me the name of each provider and the total sum of the product amount that they have.
Ex:
CREATE TABLE IF NOT EXISTS provider
(id int unique auto_increment primary key,
name char(50));
CREATE TABLE IF NOT EXISTS product
(id int unique auto_increment primary key,
name char(30),
provider_id int NOT NULL,
amount int NOT NULL);
Provider: (id, name)
1 Mike
2 Peter
3 John
Product: (id, name, provider_id, amount)
1 RedCar 1 100
2 BlueCar 1 50
3 RedCar 3 35
4 OrangeCar 2 500
5 GreenCar 3 250
Query:
Mike 150
Peter 500
John 285
mysql
mysql
edited Nov 13 '18 at 13:27
Madhur Bhaiya
19.6k62236
19.6k62236
asked Nov 13 '18 at 13:01
Cristian PacurarCristian Pacurar
84
84
try this stackoverflow.com/questions/10687773/…
– unos baghaii
Nov 13 '18 at 13:10
add a comment |
try this stackoverflow.com/questions/10687773/…
– unos baghaii
Nov 13 '18 at 13:10
try this stackoverflow.com/questions/10687773/…
– unos baghaii
Nov 13 '18 at 13:10
try this stackoverflow.com/questions/10687773/…
– unos baghaii
Nov 13 '18 at 13:10
add a comment |
2 Answers
2
active
oldest
votes
You need a simple LEFT JOIN
with GROUP BY
aggregation. LEFT JOIN
will ensure to account for a provider even if he/she does not have any product.
SUM()
function is used to calculate the sum of amount
for a specific provider
. We can use COALESCE()
function to handle NULL
values. SUM()
will return NULL
for the cases when there is no product for a provider.
SELECT
pvd.id,
pvd.name,
COALESCE(SUM(pdt.amount),0) AS total_amount
FROM Provider AS pvd
LEFT JOIN Product AS pdt
ON pdt.provider_id = pvd.id
GROUP BY pvd.id, pvd.name
P.S. It is advisable to use Aliasing in case of multi-table queries, for code clarity (readability) and avoiding ambiguous behaviour.
P.P.S. If you don't want to list the provider with no products; you can change LEFT JOIN
to INNER JOIN
, and get rid of the COALESCE()
function usage as well.
add a comment |
This is the SQL query that gives result as per you want.
SELECT pr.name,SUM(p.amount) as total_amount FROM `provider` pr LEFT JOIN `product` p ON p.provider_id = pr.id where 1 GROUP BY pr.id
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53281588%2fmysql-a-query-from-two-tables%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You need a simple LEFT JOIN
with GROUP BY
aggregation. LEFT JOIN
will ensure to account for a provider even if he/she does not have any product.
SUM()
function is used to calculate the sum of amount
for a specific provider
. We can use COALESCE()
function to handle NULL
values. SUM()
will return NULL
for the cases when there is no product for a provider.
SELECT
pvd.id,
pvd.name,
COALESCE(SUM(pdt.amount),0) AS total_amount
FROM Provider AS pvd
LEFT JOIN Product AS pdt
ON pdt.provider_id = pvd.id
GROUP BY pvd.id, pvd.name
P.S. It is advisable to use Aliasing in case of multi-table queries, for code clarity (readability) and avoiding ambiguous behaviour.
P.P.S. If you don't want to list the provider with no products; you can change LEFT JOIN
to INNER JOIN
, and get rid of the COALESCE()
function usage as well.
add a comment |
You need a simple LEFT JOIN
with GROUP BY
aggregation. LEFT JOIN
will ensure to account for a provider even if he/she does not have any product.
SUM()
function is used to calculate the sum of amount
for a specific provider
. We can use COALESCE()
function to handle NULL
values. SUM()
will return NULL
for the cases when there is no product for a provider.
SELECT
pvd.id,
pvd.name,
COALESCE(SUM(pdt.amount),0) AS total_amount
FROM Provider AS pvd
LEFT JOIN Product AS pdt
ON pdt.provider_id = pvd.id
GROUP BY pvd.id, pvd.name
P.S. It is advisable to use Aliasing in case of multi-table queries, for code clarity (readability) and avoiding ambiguous behaviour.
P.P.S. If you don't want to list the provider with no products; you can change LEFT JOIN
to INNER JOIN
, and get rid of the COALESCE()
function usage as well.
add a comment |
You need a simple LEFT JOIN
with GROUP BY
aggregation. LEFT JOIN
will ensure to account for a provider even if he/she does not have any product.
SUM()
function is used to calculate the sum of amount
for a specific provider
. We can use COALESCE()
function to handle NULL
values. SUM()
will return NULL
for the cases when there is no product for a provider.
SELECT
pvd.id,
pvd.name,
COALESCE(SUM(pdt.amount),0) AS total_amount
FROM Provider AS pvd
LEFT JOIN Product AS pdt
ON pdt.provider_id = pvd.id
GROUP BY pvd.id, pvd.name
P.S. It is advisable to use Aliasing in case of multi-table queries, for code clarity (readability) and avoiding ambiguous behaviour.
P.P.S. If you don't want to list the provider with no products; you can change LEFT JOIN
to INNER JOIN
, and get rid of the COALESCE()
function usage as well.
You need a simple LEFT JOIN
with GROUP BY
aggregation. LEFT JOIN
will ensure to account for a provider even if he/she does not have any product.
SUM()
function is used to calculate the sum of amount
for a specific provider
. We can use COALESCE()
function to handle NULL
values. SUM()
will return NULL
for the cases when there is no product for a provider.
SELECT
pvd.id,
pvd.name,
COALESCE(SUM(pdt.amount),0) AS total_amount
FROM Provider AS pvd
LEFT JOIN Product AS pdt
ON pdt.provider_id = pvd.id
GROUP BY pvd.id, pvd.name
P.S. It is advisable to use Aliasing in case of multi-table queries, for code clarity (readability) and avoiding ambiguous behaviour.
P.P.S. If you don't want to list the provider with no products; you can change LEFT JOIN
to INNER JOIN
, and get rid of the COALESCE()
function usage as well.
answered Nov 13 '18 at 13:29
Madhur BhaiyaMadhur Bhaiya
19.6k62236
19.6k62236
add a comment |
add a comment |
This is the SQL query that gives result as per you want.
SELECT pr.name,SUM(p.amount) as total_amount FROM `provider` pr LEFT JOIN `product` p ON p.provider_id = pr.id where 1 GROUP BY pr.id
add a comment |
This is the SQL query that gives result as per you want.
SELECT pr.name,SUM(p.amount) as total_amount FROM `provider` pr LEFT JOIN `product` p ON p.provider_id = pr.id where 1 GROUP BY pr.id
add a comment |
This is the SQL query that gives result as per you want.
SELECT pr.name,SUM(p.amount) as total_amount FROM `provider` pr LEFT JOIN `product` p ON p.provider_id = pr.id where 1 GROUP BY pr.id
This is the SQL query that gives result as per you want.
SELECT pr.name,SUM(p.amount) as total_amount FROM `provider` pr LEFT JOIN `product` p ON p.provider_id = pr.id where 1 GROUP BY pr.id
answered Nov 13 '18 at 13:44
Harry baldaniyaHarry baldaniya
115111
115111
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53281588%2fmysql-a-query-from-two-tables%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
try this stackoverflow.com/questions/10687773/…
– unos baghaii
Nov 13 '18 at 13:10