2017-10-15 312 views
-2

我有3個表的數據庫(見截圖)返回SQL結果,其中位值= 1

enter image description here

我需要返回其銷售是允許的客戶。

我能夠使用where子句返回客戶標題,但我不知道如何過濾允許營銷的客戶。我查看了哪裏和加入條款,但也許我錯過了什麼?

任何幫助將不勝感激。

回答

0
SELECT Title 
FROM Customer AS Cust 
WHERE EXISTS (SELECT * 
       FROM Statuses AS S 
       WHERE S.statusID = Cust.statusID 
       AND S.isMarketingAllowed = 1); 

請注意: 雖然可以得到相同的結果,具有相似的性能,與JOIN操作,我認爲這是不太可讀。當您需要從第二個表中獲取訪問數據(通過select子句)時,應該使用JOIN操作。

+0

謝謝您的回覆!我在下面的評論中添加了一條評論,在我原來的問題中,我可能錯過了評論。 – Kasper

0

它看起來會是這樣的:

SELECT c.Forename, c.Surname, c.Email, t.Description, s.IsMarketingAllowed 
FROM Customer c 
INNER JOIN Statuses s ON c.StatusID = s.StatusID 
INNER JOIN Titles t ON c.Title = t.TitleID 
WHERE s.IsMarketingAllowed = 1 
+0

感謝您的評論,我想我可能錯過了我原來的問題中的一些信息。目前,我有以下聲明: '代碼'\t選擇姓氏,姓氏,電子郵件標題,客戶,狀態其中Customers.Title = Titles.TitleID; 這是我需要讚揚的是,如果有意義的話,可以返回允許營銷的客戶? – Kasper

+0

你應該明確地使用寫JOIN,而不是用逗號來列出你的表。你有沒有試過運行上面的查詢? – kbball

+0

我運行了你評論過的查詢,但就像我說的那樣,在我的回覆中,這不是我所需要的,因爲我錯過了我已有的一些信息。 另外,你明確寫入JOINS是什麼意思? – Kasper