2012-03-27 178 views
0

我使用durpal 6.在检索数据我得到了以下的输出:精炼MySQL查询结果的结果

| nid | fid | 
------------ 
| 10 | 49 | 
| 10 | 57 | 
| 10 | 76 | 
| 14 | 34 | 
| 14 | 45 | 
| 14 | 95 | 
| 18 | 57 | 
| 18 | 65 | 
| 18 | 75 | 
| 19 | 56 | 
| 19 | 45 | 
| 19 | 75 | 

现在我想提炼这样

| nid | fid1 | fid2 | fid3 | 
---------------------------- 
10 | 49 | 57 | 76 | 
14 | 34 | 45 | 95 | 
18 | 57 | 65 | 75 | 
19 | 56 | 45 | 75 | 

上述输出请建议的SQL查询..

+0

你不想要那种SQL。你想在PHP中创建输出。 – Tomalak 2012-03-27 12:34:17

+0

第二个例子的结果从哪里来?你不能幻想创建没有任何输入的列。 – Manuel 2012-03-27 12:34:59

回答

1

你应该更好地解释你正在尝试做什么。您可以使用GROUP_CONCAT()将逗号分隔为逗号分隔列表。

SELECT nid, GROUP_CONCAT(fid) 
FROM tbl 
GROUP BY nid 
+0

非常感谢... – 2012-03-27 12:43:05

+0

在这里,我们通过接受答案说谢谢。只需点击您想接受的答案旁边的勾号即可。 – nnichols 2012-03-27 12:45:54

0

如果你有一个2列表,你不能得到4列,但你可以过滤你的结果。

SELECT * FROM yourtable WHERE nid = "10"; 

那么你有:

| nid | fid |

| 10 | 49 |
| 10 | 57 |
| 10 | 76 |

这样你就可以根据需要在程序中转换它。

0

你可以连接字符串,并在PHP中将其分解为数组。事情是这样的:

SELECT nid, GROUP_CONCAT(fid SEPARATOR '|') FROM table GROUP BY id; 

和PHP通过|

0

爆炸fid在SQL

SELECT nid, GROUP_CONCAT(fid) fids 
FROM tbl 
GROUP BY nid 

将使得像

nid | fids 
10 | 49,57,76 
11 | 34,45,95 

显示,你可以使用PHP格式化您期望的输出