Reputation: 1
I need help with a SQL query. I've got two separated SELECT queries:
SELECT
tbl_events.eventName as eventName1
FROM tbl_events
INNER JOIN tbl_users
ON tbl_events.eventAutorID = tbl_users.userID
WHERE tbl_users.userID = "6";
Output:
eventName1:
eventNametest1
eventNametest2
eventNametest3
eventNametest9
and
SELECT
tbl_events.eventName as eventName2
FROM tbl_users
INNER JOIN tbl_participants
ON tbl_users.userID = tbl_participants.participantUser
INNER JOIN tbl_events
ON tbl_participants.participantEvent = tbl_events.eventID
WHERE tbl_users.userID = "6";
Output:
eventName2:
eventNametest1
eventNametest3
eventNametest6
eventNametest12
eventNametest15
eventNametest16
First query is to select all events (names) created by user with a certain id (eg. id = 6), second is to get all events (event names) where user with certain id is addded as a participant. How can I combine these statements into one but with results in two different columns? The output should look something like this:
eventName1 | eventName2
eventNametest1 eventNametest1
eventNametest2 eventNametest3
eventNametest3 eventNametest6
eventNametest9 eventNametest12
NULL eventNametest15
NULL eventNametest16
Upvotes: 0
Views: 1038
Reputation: 1271131
MySQL doesn't offer FULL JOIN
. And, if someone might authorize an event and not participate, you sort of need that.
One method uses UNION ALL
and variables:
SELECT MAX(authName) as authName, MAX(partName) as partName
FROM ((SELECT e.eventName as authName, NULL as partName, (@rne := @rne + 1) as rn
FROM tbl_events e JOIN
tbl_users u
ON e.eventAutorID = u.userID CROSS JOIN
(SELECT @rna := 0) params
WHERE u.userID = 6
ORDER BY eventName
) UNION ALL
(SELECT NULL, e.eventName, (@rnp := @rnp + 1) as rn
FROM tbl_participants p JOIN
tbl_events e
ON e.eventId = p.participantEvent CROSS JOIN
(SELECT @rnp := 0) params
WHERE p.participantUser = 6
ORDER BY e.eventName
)
) ap
GROUP BY rn;
Upvotes: 1
Reputation: 1
you just use union reference: https://dev.mysql.com/doc/refman/5.7/en/union.html
Upvotes: 0