mysql查询按列展示,在MySQL中结合多个查询结果(按列)

I have 4 different queries and each of them return individual unique set of Results.

I need to combine the Query Results with using a single query.

my sample queries are:

1. select cls.* from (calls as cls inner join calls_users as clsusr on cls.id=clsusr.call_id) inner join users as usr on usr.id=cls.assigned_user_id where cls.assigned_user_id='seed_max_id'

2. select mtn.* from (meetings as mtn inner join meetings_users as mtnusr on mtn.id=mtnusr.meeting_id) inner join users as usr on usr.id=mtn.assigned_user_id where mtn.assigned_user_id='seed_max_id'

3. select tsk.* from tasks as tsk inner join users as usr on usr.id=tsk.assigned_user_id where tsk.assigned_user_id='seed_max_id'

4. select nts.* from (notes as nts inner join accounts as acnts on acnts.id=nts.parent_id) inner join users as usr on usr.id=acnts.assigned_user_id where acnts.assigned_user_id='seed_max_id'

I tried the following way, but it didn't work

Combine: SELECT tbl1.*, tbl2.*

from (select cls.* from (calls as cls inner join calls_users as clsusr on cls.id=clsusr.call_id) inner join users as usr on usr.id=cls.assigned_user_id where cls.assigned_user_id='seed_max_id') as tbl1

left outer join

(select mtn.* from (meetings as mtn inner join meetings_users as mtnusr on mtn.id=mtnusr.meeting_id) inner join users as usr on usr.id=mtn.assigned_user_id where mtn.assigned_user_id='seed_max_id') as tbl2

using(assigned_user_id)

i also tried right outer join and other inner joins

I am really stuck, if any one know the solution then please help.

I need the similar result like How can I join two tables with different number of rows in MySQL?.

Data Sample:

From Query 1:

+-------------------------------------------+------------------+-

| Call Name | Call Description |

+-------------------------------------------+------------------+-

| Discuss Review Process | NULL |

| Get More information on the proposed deal | NULL |

| Left a message | NULL |

| Discuss Review Process | NULL |

+-------------------------------------------+------------------+

From Query 2:

+-----------------------+-----------------------------------------------------------

| Meeting Name | Meeting Description

+-----------------------+-----------------------------------------------------------

| Review needs | Meeting to discuss project plan and hash out the details o

| Initial discussion | Meeting to discuss project plan and hash out the details o

| Demo | Meeting to discuss project plan and hash out the details o

| Discuss pricing | Meeting to discuss project plan and hash out the details o

| Review needs | Meeting to discuss project plan and hash out the details o

+-----------------------+-----------------------------------------------------------

i need to combine the columns like the following:

+-------------------------------------------+------------------+-------------------+-------------------+

| Call Name | Call Description |Meeting Name |Meeting Description|

+-------------------------------------------+------------------+-------------------+-------------------+

| Discuss Review Process | NULL |Review needs |Meeting to discuss |

| Get More information on the proposed deal | NULL |Initial discussion |Meeting to discuss |

| Left a message | NULL |Demo |Meeting to discuss |

| NULL | NULL |Discuss pricing |Meeting to discuss |

| NULL | NULL |Review needs |Meeting to discuss |

+-------------------------------------------+------------------+-------------------+-------------------+

解决方案

The best you can do is a UNION or UNION ALL but this requires them to have the same type and number of columns. For example:

SELECT 'Customer' AS type, id, name FROM customer

UNION ALL

SELECT 'Supplier', id, name FROM supplier

UNION ALL

SELECT 'Employee', id, full_name FROM employee

The column names don't have to match. The aliases from the first part will be used for the rest.

I'll also add that instead of:

select cls.* from (calls as cls inner join calls_users as clsusr on cls.id=clsusr.call_id) inner join users as usr on usr.id=cls.assigned_user_id where cls.assigned_user_id='seed_max_id'

you should remove the unnecessary subquery and just do:

SELECT c.*

FROM calls c

JOIN calls_users cu ONc.id = cu.call_id

WHERE c.assigned_user_id = 'seed_max_id'

There's no need for the extra complexity and the above is eminently more readable.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值