2015-10-16 173 views
0

基本上,我想從數據庫中獲取數據。我想要的數據是沒有匹配球隊名稱的人員/成員。在註冊表中,每個成員都必須填寫一個團隊名稱,然後選擇一個類別,假設類別A必須每個團隊有2名成員。現在我想要一個沒有比賽隊名的成員名單。邏輯如何?我如何獲得沒有匹配團隊名稱的成員名單?

我在想什麼是:

  1. 得到球隊的名字列表
  2. 做一個循環,以檢查是否存在有同一支球隊名稱和類別的成員(NUM行小於或正是1)
  3. 列表結果

我還沒有編寫任何代碼,因爲我很困惑與我會怎麼做它的邏輯。希望你們能給我提供一些反饋意見。

此外,我目前使用Codeigniter

編輯#1

這裏是表結構

ID | NAME | CATEGORY | TEAM 
1 | Person 1 | CAT A | TEAM A 
2 | PERSON 2 | CAT A | TEAM A 
3 | PERSON 3 | CAT A | TEAM B 

我希望的結果是什麼人沒有其他隊員,所以其結果必然是:

3 | PERSON 3 | CAT A | TEAM B 

因爲其他人有匹配的團隊

+0

所有你需要的是一個連接(外連接,在這種情況下) – Strawberry

回答

0

我想這可能會幫助您:

SELECT 
    id, 
    NAME, 
    category, 
    teams.team 
FROM 
    teams 
    INNER JOIN 
    (SELECT 
     team 
    FROM 
     teams 
    GROUP BY team 
    HAVING COUNT(id) = 1) diff 
    ON teams.team = diff.team ; 

SQLFiddle Demo

+0

嘿@felipe,這幾乎是完美的,但我只想做一個成員tipe,所以我嘗試添加tipe ='tipe a'但它不起作用,我應該在哪裏放置where子句? http://www.sqlfiddle.com/#!9/cfb44f/3。無論如何感謝:) – taek

+0

哦對不起,我忘了,哪裏應該在最後。它解決了。再次感謝 ! – taek

2
SELECT * 
FROM your_table 
WHERE category = 'CAT A' 
    AND team != 'TEAM A' 
+0

哎@alex感謝您的回答,不過這並未」解決問題。因爲他們以註冊形式填寫他們的球隊名稱。所以表中會有很多團隊名稱。其中一些人沒有匹配的團隊名稱。這就是我想成爲的結果。 – taek