2017-02-13 81 views
0

該表可以具有多個成員的條目 - 即他可以是多個組的成員。我希望包括所有開始'cr'的團體的成員,但不包括那些也是prodcr成員的那些團體的成員,但它不起作用 - 它包括所有那些是prodcr成員的成員。我花了很多時間在這 - 請告訴我我做錯了什麼?在字段中包含一些值並排除其他值

select DISTINCT mem_no 
       , first_name 
       , last_name 
       , inits 
       , addr1 
       , post_code 
       , email 
      FROM members m 
      JOIN `group` g 
      USING (mem_no) 
      WHERE ( 
        NOT ('group' = "prodcr") 
      AND (`group` LIKE "cr%") 
       ) 
      ORDER 
       BY last_name ASC 
       , first_name ASC 
      LIMIT 0,500 
+0

顯示兩個表的結構。兩個表中的關鍵/外鍵是什麼? –

+0

另外......如果你有成員和組,最合乎邏輯的方法就是擁有一個group_member多對多的關係表。 –

回答

0

也許這將幫助:

SELECT DISTINCT mem_no, first_name, last_name, inits, addr1,post_code, email 
     FROM members JOIN group USING (mem_no) 
     WHERE group LIKE "cr%" AND group != "prodcr" 
     ORDER BY last_name ASC, first_name ASC 
     LIMIT 500 

PS:如果你的名字你的表group和你列group別的東西(group is a reserved word),它會更好。

+0

爲了解釋的目的,我將實際的標籤更改爲組 - 這是sql中的俱樂部。我曾試過俱樂部<>「prodcr」,但也沒有奏效。 – CRG

+0

給我一個你執行這個查詢後得到的例子,但你不想得到它作爲結果。 –

0

我一直在閱讀了每一個網站我可以躺在我的手,它似乎是這是解決方案:

我在情況設置如下它可以幫助其他人有類似的困境

SELECT mem_no,first_name,last_name,inits,addr1,post_code,email FROM members JOIN club USING(mem_no)WHERE club <>'prodcr'AND club LIKE'cr%'and mem_no NOT IN(SELECT mem_no FROM club WHERE club =' prodcr')GROUP BY mem_no ORDER by last_name ASC,名字ASC限制0,500

+0

對不起,但你的查詢沒有意義,這是多餘的,這將需要更多的執行時間。 –

相關問題