SQL查询让我望而却步。我能够使用匹配的软件来显示所有行,并且可能可以理清如何从computerID中获取计算机名,但是获得实际所需的输出只是我自己。 甚至提出问题都是具有挑战性的,但是我们走了。
我有一张表,列出了装有每种软件的计算机。这些计算机由computerID标识,并且存在第二个表,该表将computerID与计算机名相关联。 我需要的是具有每个软件的计算机名称的列表。
软件表
----------------------------
| computerID | software |
----------------------------
| 1 | 7-zip |
----------------------------
| 1 | winzip |
----------------------------
| 2 | 7-zip |
----------------------------
| 2 | chrome |
----------------------------
| 3 | winzip |
----------------------------
| 3 | putty |
----------------------------
计算机表
-----------------------------
| computerID | computerName |
-----------------------------
| 1 | PC1 |
-----------------------------
| 2 | PC2 |
-----------------------------
| 3 | PC3 |
-----------------------------
所需的输出是:
7-zip: PC1, PC2
chrome: PC2
putty: PC3
winzip: PC1, PC3
有人可以帮助将其放入查询吗?
谢谢, 院长
答案 0 :(得分:0)
您必须查看JOINS和AGGREGATE FUNCTIONS,尤其是GROUP_CONCAT:
SELECT CONCAT(A.computerName, ': ',
GROUP_CONCAT(B.software)) AS RESULT
FROM Computer A INNER JOIN Software B ON A.computerID = B.computerID
GROUP BY A.computerName
答案 1 :(得分:0)
太棒了。非常感谢。那只是我需要的启动。结果查询为:
SELECT concat(t1.NAME, ":",
GROUP_CONCAT(t2.name))
FROM `software` t1 JOIN computers t2 ON t1.computerid=t2.computerid
GROUP BY t1.name
再次感谢。