2011-04-07 180 views
0

我有两个MySQL表,我想知道是否有任何方法来合并第一个查询的结果,以便它们在第二个查询中显示为列查询。下面是一个例子:MySQL - 将第一个查询结果合并到第二个查询的列中

表1

FolderTable 

ID NAME PATH 
1 c: 
2 tmp  1 
3  test 1,2 

SELECT name FROM FolderTable WHERE id IN (1, 2, 3) 
Result: 
c: 
tmp 
test 

表2

ImageTable 

ID NAME  FOLDER_ID 
1 hi.jpg  3 
2 blah.jpg  3 
3 overwlow.jpg 3 

SELECT name FROM ImageTable WHERE id = 2 
Result: 
NAME 
blah.jpg 

我想:

Result: 
NAME  PATH 
blah.jpg c:\tmp\test 

如何编写合并的输出一个QUERTY首先查询到由“\”分隔的第二个查询的PATH列中?这可能吗?

回答

1
SELECT name, 
     SELECT GROUP_CONCAT(name ORDER BY ID SEPARATOR '\') 
     FROM FolderTable 
     WHERE id BETWEEN (SELECT MAX(ID) 
          FROM FolderTable 
          WHERE ID < ImageTable.FOLDER_ID 
          AND PATH IS NULL) 
        AND ImageTable.FOLDER_ID 
FROM ImageTable WHERE id = 2 
+0

尼斯。如果我将“3”切换到ImageTable.folderId,我就快到了。但是,如何将“1,2”切换到FolderTable.path? – GuruMeditation 2011-04-07 12:35:35

+0

我还没有看到'FOLDER_ID'...我想FolderTable中的文件夹路径以'ImageTable.FOLDER_ID'结尾,并且以最近的null PATH' ImageTable.FOLDER_ID'开始? – manji 2011-04-07 12:49:04

0

查找到INNER JOIN

SELECT 
    FolderTable.Name AS FolderName, ImageTable.Name AS ImageName 
FROM 
    FolderTable 
INNER JOIN 
    ImageTable ON ImageTable.FolderId = FolderTable.ID 

您可以连接字段连同 “\”,如果你想

相关问题