2011-09-28 2 views
1

나는 두 테이블은 mp_Blogsmp_BlogCategories는 SQL : 가입이 개 테이블

mp_blog 열이에게 전화를 mp_BlogCategories가 열이

ItemID ModuleID 
    3   11 
    4   11 
    5   13 

값과

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 

하지만 다른 방식으로 오는을 사용

내가 같은 이전 GROUPBY의도 기능이지만 출력을 사용
ItemID CategoryID 
    3   1 
    4   1 
    3   2 
    4   2 
    5   3 

, 내 원래의 출력을 얻을 수있는 방법 쿼리 에 어떤 실수

SELECT a.[ItemID],b.[CategoryID] 
from [mp_Blogs] a 
    join [mp_BlogCategories] b 
     on a.ModuleID=b.ModuleID 
group by b.CategoryID,a.ItemID 
+3

ItemId = 3-> CatId = 1 및 ItemId = 4-> CatId = 2를 사용하기 원하는 규칙은 무엇입니까? 그들은 둘 다 ModuleId = 11을 가지고 있는데, 어떻게 당신이 _decide_ 할 수 있습니까? – Marco

+0

실제로 itemid와 catid는 ID 열이므로 실제 출력을 얻는 다른 방법이 있습니다 – Chandru

+1

예, 콘텐츠 또는 테이블 정의에 문제가 있습니다. ModuleId가 유일한 키인 경우 항목 3과 4는 둘 다 카테고리 1과 2에 연결됩니다. 다른 열쇠가 없다고 생각합니다. – regilero

답변

0

쿼리가 제대로 수행되고 있지만 데이터에 문제가 있습니다. 당신이 테이블을 볼 수있는 것처럼 테이블에 11 이드는 두 번 그게 그 결과를주는 thats y를 포함하고 있습니다. 그것의 더 나은 테이블에 데이터를 확인하십시오.

+0

나는 그 같은 테이블을 확인했습니다. 그저 ItemId = 3-> CatId = 1 및 ItemId = 4-> CatId = 2는 동일한 moduleid = 11을가집니다. 그래서 다른 방법으로 원래 출력을 얻습니다. – Chandru

0

출력에서 ​​데이터가 아니라 쿼리에 문제가있는 것 같습니다.

+0

테이블을 확인했습니다. 그 같은 식으로 만 = ItemId = 3- CatId = 1 및 ItemId = 4-> CatId = 2 같은 moduleid = 11, 그래서 거기에 내 원래 출력을 얻을 다른 방법 – Chandru

+0

@ Chandru : 내 의견을 읽었습니까? 문제는 다음과 같습니다 : 동일한 ModuleId를 공유 할 때 ItemId = 3 및 CatId = 2에 대해 CatId = 1을 선택하는 이유는 무엇입니까? 왜? 우리가 이해하지 못해서 설명해주세요. – Marco

+0

@Marco : 우리 웹 사이트에서는 사용자가 새 페이지를 만들고 모듈 테이블에 영향을 주므로 moduleid도 해당 페이지에서 생성됩니다. 블로그라는 새로운 기능을 mp_blog라는 제목으로 추가합니다. 내 게시물의 테이블 구조를 볼 수 있으며 분명히 우리는 우리 블로그에 카테고리가있어 그 히트 테이블 mp_blogcategory 지금 우리가해야할 일은 내가 그 특정 모듈에 대한 itemid와 categoryid를 얻고 mp_blogitemcategory와 거기에 필드 (itemid와 categoryid)에 삽입 할 것임을 의미합니다. – Chandru

0

두 테이블 모두에서 유일한 키가 부족하다는 의견을 읽은 후에는 테이블에 키를 추가하여 결과를 얻을 것을 제안합니다.

어떻게 될거야 - 잘 작동하는 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 
+0

ItemID와 Categoryid는 Identity 열입니다. 내 표는 [mp_BlogItemCategories] 필드라는 테이블에 삽입 할 필요가 다른 테이블 및 카테고리 ID (열)에 전 주면 다른 테이블이며, 카테고리 ID 항목 ID (열) ID (아이디) 항목 ID 내 moduleid = 11 0 내 mp_BlogItemCategories 테이블의 Id 1 ItemId : 3,4 CategoryID : 1,2 어떻게해야합니까? – Chandru