【发布时间】:2010-01-27 19:54:10
【问题描述】:
我对 SQL 很陌生,希望有人能帮助我了解一些 SQL 语法。我有一个包含这些表和字段的数据库,
-
DATA:data_id、person_id、attribute_id、日期、值 -
PERSONS: person_id, parent_id, name -
ATTRIBUTES:attribute_id,attribute_type
attribute_type 可以是“身高”或“体重”
问题 1
给一个人的“姓名”,我想返回一个每个孩子的“体重”测量表。即:如果 John 有 3 个孩子的名字 Alice、Bob 和 Carol,那么我想要一张这样的桌子
| date | Alice | Bob | Carol |
我知道如何像这样得到一长串儿童的体重:
select d.date,
d.value
from data d,
persons child,
persons parent,
attributes a
where parent.name='John'
and child.parent_id = parent.person_id
and d.attribute_id = a.attribute_id
and a.attribute_type = "Weight';
但我不知道如何创建一个如下所示的新表:
| date | Child 1 name | Child 2 name | ... | Child N name |
问题 2
另外,我想选择一定范围内的属性。
问题 3
如果孩子的日期不一致怎么办?例如,假设 Alice 比 Bob 大 3 岁,那么在 Alice 生命的前 3 年中没有 Bob 的数据。如果我们请求所有数据,数据库如何处理?
【问题讨论】:
标签: sql