我应该如何更改以下MySql查询...
select o.name, e.name, c.phone from organization o, employee e, contact c
产生这个......
Organization | Employee | Contact Number
--------------+-------------+-----------------
Acme Cement | John Doe | 555-1234
Acme Cement | Jane Plain | 555-1212
Acme Cement | Bob knob | 555-1111
Hack IT | Mike Smith | 444-2343
Hack IT | Ed Snowdon | 444-4444
这样它就会返回......
Organization | Employee | Contact Number
--------------+-------------+-----------------
Acme Cement | John Doe | 555-1234
| Jane Plain | 555-1212
| Bob knob | 555-1111
Hack IT | Mike Smith | 444-2343
| Ed Snowdon | 444-4444
答案 0 :(得分:0)
您无法使用MySQL实现所需的结果集。查询结果将始终在行中包含o.name。
但是,如果您使用GROUP BY和GROUP_CONCAT函数,那么您可以更容易地处理结果:
SELECT o.name, GROUP_CONCAT(e.name), GROUP_CONCAT(c.phone)
FROM organization o
LEFT JOIN employee e ON e.orgid = o.id
LEFT JOIN contact c ON c.empid = e.id
GROUP BY o.name
您的结果将是:
| Organization | Employee | Contact Number |
|--------------+--------------------------------+----------------------------|
| Acme Cement | John Doe,Jane Plain,Bob knob | 555-1234,555-1212,555-1111 |
| Hack IT | Mike Smith,Ed Snowdon | 444-2343,444-4444 |
现在,不是为连续行隐藏o.name的结果,而是每个组织有一行,其他列是相关数据的逗号列表。如果您愿意,该函数允许您使用逗号以外的分隔符。