【发布时间】:2015-08-26 08:52:50
【问题描述】:
我在 Oracle 中有一个包含子查询的选择。我需要从 PHP 代码中的子查询访问值。
例如,我可以访问 F.FILE_NAME 和 F.ID,但我还需要访问 MI.ID 和 MCI.ITEM_ID。如何做到这一点?
$select ="SELECT F.FILE_NAME, F.ID
FROM b_file F where exists
(SELECT '1'from b_medialib_collection_item MCI, b_medialib_item MI
WHERE MI.ID=MCI.ITEM_ID
AND F.ID=MI.SOURCE_ID
)";
我已经更新了我的查询,但现在的问题是 F.FILENAME 在表中有重复项。如果存在具有相同 F.FILENAME 的行,我只需要返回一次。
$select2 = "SELECT
F.FILE_NAME,MCI.COLLECTION_ID, MI.DATE_UPDATE,F.ID
FROM b_medialib_collection_item MCI
INNER JOIN b_medialib_item MI ON (MI.ID=MCI.ITEM_ID)
INNER JOIN b_file F ON (F.ID=MI.SOURCE_ID)
ORDER BY MI.DATE_UPDATE DESC";
例子
ID FILE_NAME
1 module.xls
2 doc.doc
3 foto.img
4 doc.doc
这是 b_file 表的基本结构,如果有很多重复,我想做的是从 b_file 表中只返回一条记录 - 具有相同 FILE_NAME 的行。在这种情况下,输出将是
1 module.xls
2 doc.doc
3 foto.img
【问题讨论】:
-
不能,需要使用join
-
如果你想使用不同表中的字段,你必须加入他们
-
添加
GROUP BY (F.FILENAME)