UNION SELECT after LEFT JOIN and JOIN
up vote
0
down vote
favorite
SELECT DISTINCT re.*
FROM `reports` r
LEFT JOIN `users` u
ON u.`id_rep` = r.`id`
JOIN `customers` c
ON u.`id` = r.`uid`
WHERE r.`uid` = '1' and r.`name` LIKE 'urgent'
ORDER BY r.date DESC
Without making any modifications prior to the WHERE clause, would it be possible to use UNION (or a better approach) after the LIKE statement in order to SELECT from a fourth table called workers and ORDER the results BY r.date
DESC?
mysql
add a comment |
up vote
0
down vote
favorite
SELECT DISTINCT re.*
FROM `reports` r
LEFT JOIN `users` u
ON u.`id_rep` = r.`id`
JOIN `customers` c
ON u.`id` = r.`uid`
WHERE r.`uid` = '1' and r.`name` LIKE 'urgent'
ORDER BY r.date DESC
Without making any modifications prior to the WHERE clause, would it be possible to use UNION (or a better approach) after the LIKE statement in order to SELECT from a fourth table called workers and ORDER the results BY r.date
DESC?
mysql
I don't understand your EDIT. Please make a stab at the query; maybe it will be clearer then.
– Rick James
Nov 25 at 23:49
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
SELECT DISTINCT re.*
FROM `reports` r
LEFT JOIN `users` u
ON u.`id_rep` = r.`id`
JOIN `customers` c
ON u.`id` = r.`uid`
WHERE r.`uid` = '1' and r.`name` LIKE 'urgent'
ORDER BY r.date DESC
Without making any modifications prior to the WHERE clause, would it be possible to use UNION (or a better approach) after the LIKE statement in order to SELECT from a fourth table called workers and ORDER the results BY r.date
DESC?
mysql
SELECT DISTINCT re.*
FROM `reports` r
LEFT JOIN `users` u
ON u.`id_rep` = r.`id`
JOIN `customers` c
ON u.`id` = r.`uid`
WHERE r.`uid` = '1' and r.`name` LIKE 'urgent'
ORDER BY r.date DESC
Without making any modifications prior to the WHERE clause, would it be possible to use UNION (or a better approach) after the LIKE statement in order to SELECT from a fourth table called workers and ORDER the results BY r.date
DESC?
mysql
mysql
edited Nov 27 at 20:34
asked Nov 25 at 22:44
user165684
I don't understand your EDIT. Please make a stab at the query; maybe it will be clearer then.
– Rick James
Nov 25 at 23:49
add a comment |
I don't understand your EDIT. Please make a stab at the query; maybe it will be clearer then.
– Rick James
Nov 25 at 23:49
I don't understand your EDIT. Please make a stab at the query; maybe it will be clearer then.
– Rick James
Nov 25 at 23:49
I don't understand your EDIT. Please make a stab at the query; maybe it will be clearer then.
– Rick James
Nov 25 at 23:49
add a comment |
2 Answers
2
active
oldest
votes
up vote
1
down vote
Using Union and ORDER BY
:
Be explicit with results form first query:
(SELECT DISTINCT rep.name, rep.date as rdate
FROM `reports_new` rep
LEFT JOIN `repuser_new` ru
ON ru.`id_rep` = rep.`id`
JOIN `clients` c
ON c.`id` = rep.`id_client`
WHERE ru.`id_user` = '1' and rep.`name` LIKE 'urgent')
UNION
(SELECT username,rdate FROM users)
ORDER BY rdate DESC
I assumed the second table had a date column. Otherwise and explicit value could be used.
There's an example of that in the manual page
– danblack
Nov 25 at 23:24
1
Try a new question. You're adding an amount of complexity beyond the initial question and without a full example with sample output clarification by comment is getting increasingly likely to be wrong.
– danblack
Nov 25 at 23:30
add a comment |
up vote
1
down vote
If I understand the question correctly, yes. Each of the following is OK, though not necessarily efficient:
SELECT ...
FROM ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x
SELECT ...
FROM a
JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
SELECT ...
FROM a
LEFT JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
SELECT ...
FROM ( ( SELECT ... ) UNION ( SELECT ... ) ) AS a
JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
etc. (I may have added more parentheses than necessary.)
More UNION tips:
- Yes, the number of columns needs to be the same.
- The default column names come from the first
SELECT
. - If you have a constant string in a column of the first
SELECT
, that limits the length of the matching string of the otherSELECTs
. (Simply pad with blanks to 'fix' the problem.) - If appropriate, use
UNION ALL
do avoid the de-duping phase, thereby being faster thanUNION
, which is the same asUNION DISTINCT
.
@Rick the last 2 queries are equivalent. TheORDER BY
is applied to the whole result set in both of them: dbfiddle.uk/…
– ypercubeᵀᴹ
Nov 25 at 23:58
1
@ypercubeᵀᴹ - Geez, I'm only a decade out of step -- bugs.mysql.com/bug.php?id=27848 "fixed" that in 2008 (5.0.56, 5.1.23). Thanks for rattling my cage.
– Rick James
Nov 26 at 0:12
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
Using Union and ORDER BY
:
Be explicit with results form first query:
(SELECT DISTINCT rep.name, rep.date as rdate
FROM `reports_new` rep
LEFT JOIN `repuser_new` ru
ON ru.`id_rep` = rep.`id`
JOIN `clients` c
ON c.`id` = rep.`id_client`
WHERE ru.`id_user` = '1' and rep.`name` LIKE 'urgent')
UNION
(SELECT username,rdate FROM users)
ORDER BY rdate DESC
I assumed the second table had a date column. Otherwise and explicit value could be used.
There's an example of that in the manual page
– danblack
Nov 25 at 23:24
1
Try a new question. You're adding an amount of complexity beyond the initial question and without a full example with sample output clarification by comment is getting increasingly likely to be wrong.
– danblack
Nov 25 at 23:30
add a comment |
up vote
1
down vote
Using Union and ORDER BY
:
Be explicit with results form first query:
(SELECT DISTINCT rep.name, rep.date as rdate
FROM `reports_new` rep
LEFT JOIN `repuser_new` ru
ON ru.`id_rep` = rep.`id`
JOIN `clients` c
ON c.`id` = rep.`id_client`
WHERE ru.`id_user` = '1' and rep.`name` LIKE 'urgent')
UNION
(SELECT username,rdate FROM users)
ORDER BY rdate DESC
I assumed the second table had a date column. Otherwise and explicit value could be used.
There's an example of that in the manual page
– danblack
Nov 25 at 23:24
1
Try a new question. You're adding an amount of complexity beyond the initial question and without a full example with sample output clarification by comment is getting increasingly likely to be wrong.
– danblack
Nov 25 at 23:30
add a comment |
up vote
1
down vote
up vote
1
down vote
Using Union and ORDER BY
:
Be explicit with results form first query:
(SELECT DISTINCT rep.name, rep.date as rdate
FROM `reports_new` rep
LEFT JOIN `repuser_new` ru
ON ru.`id_rep` = rep.`id`
JOIN `clients` c
ON c.`id` = rep.`id_client`
WHERE ru.`id_user` = '1' and rep.`name` LIKE 'urgent')
UNION
(SELECT username,rdate FROM users)
ORDER BY rdate DESC
I assumed the second table had a date column. Otherwise and explicit value could be used.
Using Union and ORDER BY
:
Be explicit with results form first query:
(SELECT DISTINCT rep.name, rep.date as rdate
FROM `reports_new` rep
LEFT JOIN `repuser_new` ru
ON ru.`id_rep` = rep.`id`
JOIN `clients` c
ON c.`id` = rep.`id_client`
WHERE ru.`id_user` = '1' and rep.`name` LIKE 'urgent')
UNION
(SELECT username,rdate FROM users)
ORDER BY rdate DESC
I assumed the second table had a date column. Otherwise and explicit value could be used.
edited Nov 25 at 23:47
answered Nov 25 at 22:59
danblack
1,4661212
1,4661212
There's an example of that in the manual page
– danblack
Nov 25 at 23:24
1
Try a new question. You're adding an amount of complexity beyond the initial question and without a full example with sample output clarification by comment is getting increasingly likely to be wrong.
– danblack
Nov 25 at 23:30
add a comment |
There's an example of that in the manual page
– danblack
Nov 25 at 23:24
1
Try a new question. You're adding an amount of complexity beyond the initial question and without a full example with sample output clarification by comment is getting increasingly likely to be wrong.
– danblack
Nov 25 at 23:30
There's an example of that in the manual page
– danblack
Nov 25 at 23:24
There's an example of that in the manual page
– danblack
Nov 25 at 23:24
1
1
Try a new question. You're adding an amount of complexity beyond the initial question and without a full example with sample output clarification by comment is getting increasingly likely to be wrong.
– danblack
Nov 25 at 23:30
Try a new question. You're adding an amount of complexity beyond the initial question and without a full example with sample output clarification by comment is getting increasingly likely to be wrong.
– danblack
Nov 25 at 23:30
add a comment |
up vote
1
down vote
If I understand the question correctly, yes. Each of the following is OK, though not necessarily efficient:
SELECT ...
FROM ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x
SELECT ...
FROM a
JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
SELECT ...
FROM a
LEFT JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
SELECT ...
FROM ( ( SELECT ... ) UNION ( SELECT ... ) ) AS a
JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
etc. (I may have added more parentheses than necessary.)
More UNION tips:
- Yes, the number of columns needs to be the same.
- The default column names come from the first
SELECT
. - If you have a constant string in a column of the first
SELECT
, that limits the length of the matching string of the otherSELECTs
. (Simply pad with blanks to 'fix' the problem.) - If appropriate, use
UNION ALL
do avoid the de-duping phase, thereby being faster thanUNION
, which is the same asUNION DISTINCT
.
@Rick the last 2 queries are equivalent. TheORDER BY
is applied to the whole result set in both of them: dbfiddle.uk/…
– ypercubeᵀᴹ
Nov 25 at 23:58
1
@ypercubeᵀᴹ - Geez, I'm only a decade out of step -- bugs.mysql.com/bug.php?id=27848 "fixed" that in 2008 (5.0.56, 5.1.23). Thanks for rattling my cage.
– Rick James
Nov 26 at 0:12
add a comment |
up vote
1
down vote
If I understand the question correctly, yes. Each of the following is OK, though not necessarily efficient:
SELECT ...
FROM ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x
SELECT ...
FROM a
JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
SELECT ...
FROM a
LEFT JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
SELECT ...
FROM ( ( SELECT ... ) UNION ( SELECT ... ) ) AS a
JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
etc. (I may have added more parentheses than necessary.)
More UNION tips:
- Yes, the number of columns needs to be the same.
- The default column names come from the first
SELECT
. - If you have a constant string in a column of the first
SELECT
, that limits the length of the matching string of the otherSELECTs
. (Simply pad with blanks to 'fix' the problem.) - If appropriate, use
UNION ALL
do avoid the de-duping phase, thereby being faster thanUNION
, which is the same asUNION DISTINCT
.
@Rick the last 2 queries are equivalent. TheORDER BY
is applied to the whole result set in both of them: dbfiddle.uk/…
– ypercubeᵀᴹ
Nov 25 at 23:58
1
@ypercubeᵀᴹ - Geez, I'm only a decade out of step -- bugs.mysql.com/bug.php?id=27848 "fixed" that in 2008 (5.0.56, 5.1.23). Thanks for rattling my cage.
– Rick James
Nov 26 at 0:12
add a comment |
up vote
1
down vote
up vote
1
down vote
If I understand the question correctly, yes. Each of the following is OK, though not necessarily efficient:
SELECT ...
FROM ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x
SELECT ...
FROM a
JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
SELECT ...
FROM a
LEFT JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
SELECT ...
FROM ( ( SELECT ... ) UNION ( SELECT ... ) ) AS a
JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
etc. (I may have added more parentheses than necessary.)
More UNION tips:
- Yes, the number of columns needs to be the same.
- The default column names come from the first
SELECT
. - If you have a constant string in a column of the first
SELECT
, that limits the length of the matching string of the otherSELECTs
. (Simply pad with blanks to 'fix' the problem.) - If appropriate, use
UNION ALL
do avoid the de-duping phase, thereby being faster thanUNION
, which is the same asUNION DISTINCT
.
If I understand the question correctly, yes. Each of the following is OK, though not necessarily efficient:
SELECT ...
FROM ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x
SELECT ...
FROM a
JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
SELECT ...
FROM a
LEFT JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
SELECT ...
FROM ( ( SELECT ... ) UNION ( SELECT ... ) ) AS a
JOIN ( ( SELECT ... ) UNION ( SELECT ... ) ) AS x ON ...
etc. (I may have added more parentheses than necessary.)
More UNION tips:
- Yes, the number of columns needs to be the same.
- The default column names come from the first
SELECT
. - If you have a constant string in a column of the first
SELECT
, that limits the length of the matching string of the otherSELECTs
. (Simply pad with blanks to 'fix' the problem.) - If appropriate, use
UNION ALL
do avoid the de-duping phase, thereby being faster thanUNION
, which is the same asUNION DISTINCT
.
edited Nov 26 at 0:13
answered Nov 25 at 23:47
Rick James
40.2k22257
40.2k22257
@Rick the last 2 queries are equivalent. TheORDER BY
is applied to the whole result set in both of them: dbfiddle.uk/…
– ypercubeᵀᴹ
Nov 25 at 23:58
1
@ypercubeᵀᴹ - Geez, I'm only a decade out of step -- bugs.mysql.com/bug.php?id=27848 "fixed" that in 2008 (5.0.56, 5.1.23). Thanks for rattling my cage.
– Rick James
Nov 26 at 0:12
add a comment |
@Rick the last 2 queries are equivalent. TheORDER BY
is applied to the whole result set in both of them: dbfiddle.uk/…
– ypercubeᵀᴹ
Nov 25 at 23:58
1
@ypercubeᵀᴹ - Geez, I'm only a decade out of step -- bugs.mysql.com/bug.php?id=27848 "fixed" that in 2008 (5.0.56, 5.1.23). Thanks for rattling my cage.
– Rick James
Nov 26 at 0:12
@Rick the last 2 queries are equivalent. The
ORDER BY
is applied to the whole result set in both of them: dbfiddle.uk/…– ypercubeᵀᴹ
Nov 25 at 23:58
@Rick the last 2 queries are equivalent. The
ORDER BY
is applied to the whole result set in both of them: dbfiddle.uk/…– ypercubeᵀᴹ
Nov 25 at 23:58
1
1
@ypercubeᵀᴹ - Geez, I'm only a decade out of step -- bugs.mysql.com/bug.php?id=27848 "fixed" that in 2008 (5.0.56, 5.1.23). Thanks for rattling my cage.
– Rick James
Nov 26 at 0:12
@ypercubeᵀᴹ - Geez, I'm only a decade out of step -- bugs.mysql.com/bug.php?id=27848 "fixed" that in 2008 (5.0.56, 5.1.23). Thanks for rattling my cage.
– Rick James
Nov 26 at 0:12
add a comment |
Thanks for contributing an answer to Database Administrators Stack Exchange!
- 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.
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%2fdba.stackexchange.com%2fquestions%2f223394%2funion-select-after-left-join-and-join%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
I don't understand your EDIT. Please make a stab at the query; maybe it will be clearer then.
– Rick James
Nov 25 at 23:49