2012-04-17 43 views
-1

詳情:http://screencast.com/t/fTRzyqsoMYSQL兩個表加入並得到結果基礎上,並僅通過相同的字段值

基本上有2個MySQL表(聯繫人和交易),並需要獲得的兩個條件

的基礎上的ContactID
  1. 獲取的所有聯繫人(使用ContactID),那裏是所有
  2. 沒有成交僅獲得那些聯繫人誰都有一個或多個交易記錄,但所有的人都與取消狀態。

幫助!?

+1

您是否要求SQL代碼?你有什麼嘗試? – Aaron 2012-04-17 21:02:48

回答

0

你可以用一個簡單的LEFT連接實際完成這個...並查找NULL(未找到)。通過進行左連接,它會從左表中獲取所有記錄,而不管右側是否匹配。因此,如果我們將聯接條件設置爲您的交易表,則取消匹配=「否」,並且我們找到匹配項,則忽略結果集中的匹配項。如果交易中沒有記錄,或者它們全部設置爲取消=「是」,則它們被排除在聯接條件之外,因此將被視爲「未找到」

select 
     c.ContactID 
    from 
     Contacts c 
     LEFT JOIN Transactions t 
      on c.ContactID = t.ContactID 
      AND t.Cancelled = "yes" 
    where 
     t.contactID is null 
+0

好吧,這個工程,除了我必須改變t.Cancelled <>'是'才能得到正確的結果。非常感謝! – Ahmed 2012-04-17 23:56:47

+0

@Ahmed,實際上不......你想看看任何有YES的東西...如果它找到一個,那些是你想忽略的東西...因此,邏輯NEGATIVE不會找到一個並獲得我開始的是NULL。如果您的取消狀態全部大寫,則更改爲「是」或「是」,無論您的一致性值設置如何。但改爲<>「是」卻沒有答案。如果某人有YES和NO,它會發現NO,包括它並且是錯誤的,因爲在測試中沒有YES。 – DRapp 2012-04-18 00:02:55

+0

執行... **從 聯繫人選擇 c.ContactID Ç LEFT JOIN交易牛逼 上c.ContactID = t.ContactID AND t.Cancelled = 「是」 其中 t.contactID爲空* * 我得到3,5,6- 但是執行 **從 聯繫人選擇 c.ContactID ç LEFT JOIN交易噸 上c.ContactID = t.ContactID 甲ND t.Cancelled =「no」 其中 t.contactID爲空** 給了我期望的聯繫人Id結果2,4,6 有意義嗎? – Ahmed 2012-04-18 00:18:40

相關問題