0

我是 SQL 和关系 DBMS 的新手。如果它们满足 3 个给定属性,我想从关系数据库中检索记录。

例如,如果有一个包含有关实体信息的表:

table_solid : |s_id|s_name|description|
table_width : |w_id|w_name|
table_height: |h_id|h_name|
table_length: |l_id|l_name|

其中 *_id 都是主键。

我还有 3 个表用于将这些表与外键相关联。

table_s_h: |s_id|h_id|
table_s_w: |s_id|w_id|
table_s_l: |s_id|l_id|

请您解释一下我如何加入这些。

提前致谢。

                 --------- table_length
table_SOLID ----
                ----------- table_width

                ------------table_height

table_length 包含 solid 可以采用的有效长度(与其他表类似)。

4

3 回答 3

2

从一个表:

Select * 
FROM TABLE_NAME
WHERE table_width = SOME_VALUE3
AND table_height= SOME_VALUE2
AND table_length = SOME_VALUE3

那是你要找的吗?或者你想查询多个表?如果是这样试试这个:

Select * 
FROM TABLE_SOLID solid
Inner join table_width width on solid.w_id = width.w_id
inner join table_height height on solid.h_id = height.h_id
inner join table_length length on solid.l_id = length.l_id

此链接可能对您有用 http://dev.mysql.com/doc/refman/5.0/en/join.html

于 2009-02-19T12:48:13.647 回答
0

我不清楚您的数据库架构。

这四个不同的表?如果是,它们是如何连接起来的,即如何检索给定实体的宽度、高度、长度?

还是 1 个表中的这四列由 s_id 标识?

请澄清。

于 2009-02-19T13:09:25.530 回答
0

我希望我已经理解了你的架构。

SELECT
    s.*
FROM
    table_solid AS s
WHERE
    s.s_id IN
(
(SELECT s_id FROM table_s_h INNER JOIN table_height USING (h_id) WHERE h_name = H)
INTERSECT
(SELECT s_id FROM table_s_w INNER JOIN table_width USING (w_id) WHERE w_name = W)
INTERSECT
(SELECT s_id FROM table_s_l INNER JOIN table_length USING (l_id) WHERE l_name = L)
);

OT:我不知道这是否适用于 MySQL,我不在乎 - 我已经在问题中添加了“mysql”标签,而你已经删除了它。

于 2009-02-19T13:21:12.553 回答