簡體   English   中英

SQL:連接兩個表

[英]Sql: joining two tables

我有兩個表叫做mp_Blogsmp_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM