我正在为我的大学任务构建一个Oracle应用程序,当我尝试执行子查询以返回另一个列以允许我选择DISTINCT存储而不获取其图像时,我遇到了一些非常奇怪的行为。
我需要这样做的原因是因为我的Image需要以BLOB格式存储(由于分配规范),因此我希望首先选择唯一的商店项目,然后拉回相关的BLOB缩略图那家商店。
我的方法如下:
SELECT DISTINCT
stores.store_id,
stores.name,
stores.description,
stores.postcode
FROM stores
INNER JOIN
(
SELECT
dbms_lob.getlength(store_images.thumbnail) AS thumbnail
FROM store_images
) store_images ON stores.store_id = store_images.store_id
WHERE stores.store_id = 2;
对我而言,一切看起来都不错,但是我收到了错误
ORA-00904: "STORE_IMAGES"."STORE_ID": invalid identifier
我知道这个错误意味着什么,但是在我的问题的上下文中对我来说没什么意义,我已经对模式进行了三重检查,外键和主键的名称相同。
如果删除子查询组件,查询编译正常。这是什么问题?
答案 0 :(得分:3)
您需要在内联视图中提取store_images.store_id:
INNER JOIN
(
SELECT
dbms_lob.getlength(store_images.thumbnail) AS thumbnail,
store_images.store_id
FROM store_images
) store_images ON stores.store_id = store_images.store_id
顺便说一句,由于您没有从内联视图中进行选择,因此您的陈述可缩短为:
SELECT DISTINCT
stores.store_id,
stores.name,
stores.description,
stores.postcode
FROM stores
INNER JOIN store_images
ON stores.store_id = store_images.store_id
AND stores.store_id = 2;
答案 1 :(得分:0)
SELECT DISTINCT
stores.store_id,
stores.name,
stores.description,
stores.postcode,
dbms_lob.getlength(store_images.thumbnail) AS thumbnail
FROM stores,store_images
where stores.store_id = store_images.store_id
AND stores.store_id = 2;