我有3张桌子:
Advancements
id
Advancement_Requirements
advancement_id,
requirement_id
Requirements
id
description
我希望获得某个requirments.descriptions
的所有advancement.id
。我能够做到这一点,但我必须使用DISTINCT
,我不想这样做。如果我不使用DISTINCT
,我会获得结果的页面和页面。这是我正在运行的查询。请告诉我如何在没有DISTINCT
的情况下获得我的结果。
select distinct(requirements.description)
from requirements
inner join advancement_requirements on requirements.requirement_id = advancement_requirements.requirement_id
inner join advancements on advancement_requirements.advancement_id = 1;
我做错了什么?
答案 0 :(得分:1)
我不确定你想要完成什么,但我的猜测是你试图加入表格并且你有一个搜索条件。所以你应该这样做。
select
requirements.description
from requirements
inner join advancement_requirements on requirements.requirement_id = advancement_requirements.requirement_id
inner join advancements on advancement_requirements.advancement_id = advancements.id
WHERE advancements.id = 1;
答案 1 :(得分:0)
您没有在关联中关联Advancements表,因此它只返回每个要求乘以Advancements寄存器的结果。
select requirements.description from requirements inner join advancement_requirements on requirements.requirement_id = advancement_requirements.requirement_id inner join advancements on advancement_requirements.advancement_id = advancements.id
where advancements.id = 1;
答案 2 :(得分:0)
如果您在UNIQUE
PRIMARY KEY
中有外键和(advancement_id, requirement_id)
(或Advancement_Requirements
)约束(这种n:m关系的典型布局),那么这个简单的查询不需要DISTINCT
。
SELECT r.description
FROM requirements r
JOIN advancement_requirements ar USING (requirement_id)
WHERE ar.advancement_id = 1;
或者您的问题中缺少信息。