以下のようなクエリがあります
SELECT s.ip,
t.name AS 'typeName',
e.name AS 'envName',
i.name,
s.computerName
#ap.name
#GROUP_CONCAT(DISTINCT i.name ORDER BY i.name ASC SEPARATOR ', ' ) AS instances
#GROUP_CONCAT(ap.name ORDER BY ap.name ASC SEPARATOR ', ' ) AS AppPool
FROM servers AS s
JOIN types AS t ON s.typeID = t.id
JOIN environments AS e ON s.envID = e.id
JOIN serverinstances AS si ON s.id = si.serverID
JOIN instances AS i ON si.instanceID = i.id
JOIN serverapppool AS sa ON s.id = sa.serverID
JOIN apppools AS ap ON sa.appPoolID = ap.id
WHERE computerName IS NOT NULL
上記のクエリの結果
| ip | type | env | instance | appPool | compName |
|_____________|______|_____|__________|_________|__________|
| 192.168.1.1 | App | test| com1 | fo | name1 |
| 192.168.1.1 | App | test| com1 | bo | name1 |
| 192.168.1.1 | App | test| com2 | fo | name1 |
| 192.168.1.1 | App | test| com2 | bo | name1 |
| 192.168.1.2 | App | test| com1 | fo | name2 |
| 192.168.1.2 | App | test| com1 | bo | name2 |
| 192.168.1.2 | App | test| com2 | fo | name2 |
| 192.168.1.2 | App | test| com2 | bo | name2 |
| 192.168.1.3 | App | prod| com1 | fo | name3 |
| 192.168.1.4 | App | prod| com1 | fo | name4 |
| 192.168.1.5 | App | prod| com1 | bo | name5 |
これらの結果は正確です。しかし、私はそれらを凝縮する必要があります。目標は、それらを以下のようにすることです
| ip | type | env | instances | appPools | compName |
|_____________|______|_____|_____________|__________|__________|
| 192.168.1.1 | App | test| com1, com2 | fo, bo | name1 |
| 192.168.1.2 | App | test| com1, com2 | fo, bo | name2 |
| 192.168.1.3 | App | prod| com1 | fo | name3 |
| 192.168.1.4 | App | prod| com1 | fo | name4 |
| 192.168.1.5 | App | prod| com1 | bo | name5 |
これは を使用GROUP_CONCAT
して実行できると思います。最初のクエリでわかるように、さまざまなことを試しました。しかし、必要な結果を製品化することはできません。考え?