【发布时间】:2012-03-25 12:54:23
【问题描述】:
假设我已经定义了数据结构:
Users(u_id, name);
给定u_id,以及获取用户完整资料的存储过程/函数:
getUserProfile(u_id) RETURNS (u_id, firstname, lastname, age);
现在,我想要一种方法来轻松检索所有用户,比如说 20 岁以下。 在此基础上构建的合适组件是什么,以便我可以调用类似的内容:
SELECT *
FROM user_profiles as UP
WHERE UP.age < '20'
【问题讨论】:
-
缺少基本信息。
firstname, lastname, age来自哪里? “数据结构”应该是什么?函数getUserProfile()显然专门用于返回一个用户的详细信息。需要查询源表。 -
@ErwinBrandstetter 实际上,
getUserProfile()函数执行一些过程语言函数,实际上是 PL/Java。但是,我真正喜欢的是有某种查询用户配置文件的方法,类似于如果它是一个数据集。 IE。查找我的所有特定年龄的用户? -
@Larry:如果您将
getUserProfile()函数定义为returns table,您可以像视图一样使用它:select * from getUserProfile() where age < 20当然在这种情况下您不会将u_id 传递给它。跨度> -
@a_horse_with_no_name 我知道你在说什么,尽管在这种情况下,我无法更改此功能。它实际上是建立在几个子功能之上的一个功能,这才是真正的系统设计。因此,假设这是我需要处理的,我如何才能实现我想要的,即我可以在哪里查询我的用户的属性。
-
@Larry:你有一个存储所有用户(尤其是用户ID)的表吗?
标签: database postgresql database-design stored-procedures