[英]Sql: joining two tables
我有兩個表叫做mp_Blogs
和mp_BlogCategories
mp_blog
具有列和值
ItemID ModuleID
3 11
4 11
5 13
mp_BlogCategories
具有列和值
CategoryID ModuleID
1 11
2 11
3 13
我需要這樣的輸出
ItemID CategoryID
3 1
4 2
5 3
我用這個查詢
SELECT a.[ItemID],b.[CategoryID]
from [mp_Blogs] a
join [mp_BlogCategories] b
on a.ModuleID=b.ModuleID
但是它以不同的方式出現
ItemID CategoryID
3 1
4 1
3 2
4 2
5 3
我也使用了groupby函數,但輸出與以前相同,查詢中的任何錯誤如何獲得我的原始輸出
SELECT a.[ItemID],b.[CategoryID]
from [mp_Blogs] a
join [mp_BlogCategories] b
on a.ModuleID=b.ModuleID
group by b.CategoryID,a.ItemID
您的查詢執行正常,但是表中的數據存在問題,因為您可以看到該表包含11個id兩次,這就是它給出的結果。 最好檢查表中的數據。
從輸出看來,數據,而不是查詢有問題。
閱讀注釋后,您在兩個表中都缺少唯一鍵,因此我建議您在兩個表中都添加鍵,以實現結果。
它將如何進行-在mysql中測試正常。
-- id column primary key in mp_blog table.
create table mp_blog(id smallint(5),ItemID smallint(5),
ModuleID smallint(5),constraint mp_blog_id primary key(id));
insert into mp_Blog values(1,3,11),(2,4,11),(3,5,13);
-- id column foreign key references to mp_blog primary key id.
create table mp_BlogCategories(id smallint(5),CategoryID smallint(5),
ModuleID smallint(5),constraint fk_mp_blogc foreign key(id) references mp_blog(id));
insert into mp_BlogCategories values(1,1,11),(2,2,11),(3,3,13);
-- finally what you are trying to achieve..
select b.itemid,bc.categoryid
from mp_blog b INNER JOIN mp_BlogCategories bc
on b.id=bc.id;
ItemID CategoryID
3 1
4 2
5 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.