2015-05-17 60 views
-2

所以我有一個數據庫,包括使用下表聯接和多對多的關係在MySQL的

  1. 帖(帖子ID,PostName,PostCategory)
  2. 類別(類別ID,類別名稱)的職位和類別

然後我還有一個表,該表有加盟兩人在一起如下

  • posts_categories(Posts_Category_ID,帖子ID,類別ID)
  • 我想知道如何爲下面的命令創建SQL查詢:

    一個。 b。使用多個CATEGORIES創建一個SQL查詢來填充單個POST。搜索包含多個類別的所有POSTS

    ex a。創建具有類別「數字」,「模擬」,「線性」的帖子命名爲「Post1」 ex b。搜索包含類別「數字」和「線性」的所有帖子

    非常感謝您的幫助。

    +1

    你有什麼試過?你有多遠?它將採用兩個單獨的INSERT語句將行添加到'post'和'post_category'表中。 (如果'category'中的相應行尚不存在,則需要單獨的INSERT向該表中添加行)。對於查詢,可以考慮使用具有相關子查詢的「EXISTS」謂詞對於每個類別或「SELECT COUNT(DISTINCT)」相關子查詢,並將返回的計數值與您正在查找的類別數進行比較(此問題已被多次詢問和回答)。 – spencer7593

    +0

    我是基本上是一個新手,我可以創建一個新帖子並給它一個名字,並在PostCategory字段中手動指定一個數字,我希望有人幫助我編寫查詢,以將多個類別從多個選擇菜單添加到單個帖子... – Eric

    +1

    @Eric如果你是一個新手,嘗試從簡單的東西開始,並建立這個 - 儘管所有外觀,這實際上是一個相當複雜的SQL查詢,如果你只是學習,這是肯定的值得與周圍玩耍e語言一段時間並首先學習它。如果您不介意使用TSQL而不是MySQL,並且不得不在查詢中創建表,請查看[SEDE](http://data.stackexchange.com/) - 這是一個很棒的小沙箱在中,你可以學習各種關於SE網絡的很酷的東西。 –

    回答

    0

    如果您正在討論獲取數據,則使用鏈表執行表間的連接。像下面的東西

    select p.PostName, c.CategoryName 
    from posts p inner join post_categories pc on p.PostID = pc.PostID 
    inner join categories c on c.CategoryID = pc.CategoryID 
    where c.CategoryName in ('Digitl','Linear') 
    
    +0

    特別感謝大家的幫助@Rahul ......這部分解決了我的問題,但我很滿意你的幫助人......也要感謝所有那些不喜歡我的職位的人給我越來越多的動力;) – Eric

    0

    我不知道我是否完全明白你的問題,但是下面的查詢應該返回多對多表中有多個categoryId的單個postId中的條目。讓我知道如果這能幫助:

    select * 
    from posts_categories pc 
    join (
    select postId 
    from posts_categories 
    group by postId 
    having count(categoryId) >1 
    ) x on x.postId = pc.postId 
    

    此外,你應該對這個表的和帖子ID列的categoryId唯一約束或讓你的主鍵。