2011-09-28 2 views
1

Я две таблицы называется mp_Blogs и mp_BlogCategoriesSql: Объединение двух таблиц

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 
+3

Какое правило вы хотите использовать, чтобы иметь ItemId = 3-> CatId = 1 и ItemId = 4-> CatId = 2? Они оба имеют ModuleId = 11, так как вы можете _decide_? – Marco

+0

Фактически itemid и catid - это столбец идентичности, так есть ли какой-либо другой способ получить этот фактический результат. – Chandru

+1

Да, у вас есть проблема с вашим содержанием или определением таблиц. Элементы 3 и 4 связаны с категориями 1 и 2, если единственным ключом является ModuleId. Я подозреваю, что тебе не хватает другого ключа. – regilero

ответ

0

Запрос выполняется правильно, но проблема с данными в y ou table, так как вы можете видеть, что таблица содержит 11 id два раза, что дает результат такой же. его лучше проверить данные в таблице.

+0

Я проверил таблицу так, что только для ItemId = 3-> CatId = 1 и ItemId = 4-> CatId = 2 имеют одинаковый moduleid = 11, так что это другой способ получить мой исходный вывод – Chandru

0

Из результата кажется, что что-то не так с данными, а не с запросом.

+0

i проверил таблицу это похоже на то, что только для ItemId = 3-> CatId = 1 и ItemId = 4-> CatId = 2 имеют одинаковый moduleid = 11, поэтому это есть другой способ получить мой исходный результат – Chandru

+0

@Chandru: вы прочитали мой комментарий? Проблема заключается в следующем: почему вы выбираете CatId = 1 для ItemId = 3 и CatId = 2 для ItemId = 4, когда они имеют один и тот же ModuleId? Зачем? Объясните пожалуйста, потому что мы не понимаем ... – Marco

+0

@Marco: На нашем веб-сайте, если пользователь создал новую страницу и ее влияние на таблицу модулей, так что модуль также создан на этой странице, они добавляют новую функцию, называемую blog, ее таблица хитов, называемая mp_blog u, может видеть структуру таблицы в моем сообщении, и, очевидно, мы есть категория в нашем блоге, так что теперь она попадает в таблицу 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] поле идентификатор (идентичность), ItemID, CategoryID Itemid (колонка) в другой таблице и CategoryId (колонка) в другой таблице , если я дал moduleid = 11 в моей таблице mp_BlogItemCategories Id 1 ItemID: 3,4 CategoryID: 1,2 как я должен это делать – Chandru

Смежные вопросы