我的目标是编写查询。我有三个表,A、B 和 C。这些表的编写方式是 A.bID = B.bID,B.cID = C.cID。这基本上允许我编写一个查询,将记录从 a 链接到 b,并将 b 记录链接到 c 的记录。到目前为止一切顺利,简单的查询。
我的问题是......查询中包含的列之一(我们称之为C.col3)必须具有唯一值;该列的值在查询结果中只能出现一次,而其他表中的其他列则没有这个要求。
有人可以帮我写这个查询吗?
谢谢...
更新1:
这是表格布局(对不起,我必须使用通用名称)
表 A
aID、bID、aCol1、aCol2、aCol3 ... aCol10
表 B
出价、cID、bCol1、bCol2、bCol3 ... bCol10
表 C
cID, cCol1, cCol2, col3 , cCol4 ... cCol10
如果没有 col3 中的唯一值约束,我会这样编写查询:
SELECT
A.aID, A.bID, A.aCol1 ... A.aCol10,
B.bID, B.cID, B.bCol1 ... B.bCol10,
C.cID, C.cCol1, C.cCol2, C.col3 ... C.cCol10
FROM
A, B, C
WHERE
A.bID = B.bID AND B.cID = C.cID
...但当然这并不能确保 C.col3 中的值是唯一的。
更新 2:
更多信息...
表 A 和表 B 具有一对多关系;A是“标题”,B是“项目”。
表 B 和表 C 具有一对一的关系。
这些表是缓存机制的一部分,所以很多数据看起来很相似,但在某些列中仍然不同。
由于 A 是表头,大部分重复值会在 A 中找到。
我首先需要按 A.aID 对行进行排序,但之后我只需要返回第一行,而 C.col3 的值不需要出现在该列的前一行。
这是否使事情更清楚了,还是我仍然没有任何意义?:)
最终更新:
我选择了 Bartosz Klimek 的答案,因为它最接近我的需要;我只需要修改中间的嵌套连接子句。
感谢大家的帮助!