2015-11-04 5 views
0

Пожалуйста, простите меня, если это выглядит несколько неопределенным и если мои термины неверны. Я являюсь сетевым инженером на уровне ассоциированного/младшего уровня с очень ограниченным опытом запросов SQL. С этим в стороне вот что я имею в виду;Объедините два SQL-запроса в один

Я пытаюсь создать фильтр в Goldmine (CMS/CRM), который фильтрует результаты по указанным ниже переменным.

WHERE c1.U_COMPANY > ' ' AND c1.U_CONTACT > ' ' AND 
    (c1.U_COUNTRY <> 'SOUTH AFRICA') AND 
    (c1.U_CONTACT NOT LIKE '%MANAGER%' OR c1.U_CONTACT IS NULL) AND  
    (c1.U_KEY1 NOT LIKE '%ARCHIVE%' OR c1.U_KEY1 IS NULL) AND 
    (c1.U_KEY1 NOT LIKE '%DOCUMENT%' OR c1.U_KEY1 IS NULL) AND 
    (c1.U_KEY1 NOT LIKE '%SUPPLIER%' OR c1.U_KEY1 IS NULL) AND 
    (c1.U_KEY1 NOT LIKE '%OTHER%' OR c1.U_KEY1 IS NULL) AND 
    (c1.U_KEY1 NOT LIKE '%TENANT%' OR c1.U_KEY1 IS NULL) 

Мне нужно включить следующее, но не знаю, где это безопасно для выражения выше.

SELECT C1.* 
FROM FMBSM.DBO.CONTACT1 C1 
INNER JOIN (
    SELECT DISTINCT ACCOUNTNO 
    FROM FMBSM.DBO.CONTSUPP 
    WHERE (
      CONTSUPP.RECTYPE = 'P' 
      AND CONTSUPP.CONTACT = 'E-mail Address' 
      ) 
    ) CS 
    ON CS.AccountNo = C1.AccountNo 
ORDER BY C1.CONTACT 

Любой совет будет очень благодарен.

Спасибо,

Роб

+0

Спасибо за neatening код MiguelH –

+0

не совсем уверен, что вы имеете в виду, но действительный оператор начинается с вашей 'SELECT' части (исключая' ORDER BY C1.Contact'), тогда вы помещаете всю свою часть 'WHERE', тогда вы помещаете' ORDER BY C1.Contact' par t в конце. Какой инструмент вы используете в этой инструкции? –

+0

Спасибо за редактирование Radu –

ответ

0

Я считаю, что это должно быть хорошо, чтобы положить его в конце, перед ORDER BY, где положение WHERE обычно размещается:

SELECT C1.* 
FROM FMBSM.DBO.CONTACT1 C1 
INNER JOIN (
    SELECT DISTINCT ACCOUNTNO 
    FROM FMBSM.DBO.CONTSUPP 
    WHERE (
      CONTSUPP.RECTYPE = 'P' 
      AND CONTSUPP.CONTACT = 'E-mail Address' 
      ) 
    ) CS 
    ON CS.AccountNo = C1.AccountNo 
WHERE c1.U_COMPANY > ' ' AND c1.U_CONTACT > ' ' AND 
    (c1.U_COUNTRY <> 'SOUTH AFRICA') AND 
    (c1.U_CONTACT NOT LIKE '%MANAGER%' OR c1.U_CONTACT IS NULL) AND  
    (c1.U_KEY1 NOT LIKE '%ARCHIVE%' OR c1.U_KEY1 IS NULL) AND 
    (c1.U_KEY1 NOT LIKE '%DOCUMENT%' OR c1.U_KEY1 IS NULL) AND 
    (c1.U_KEY1 NOT LIKE '%SUPPLIER%' OR c1.U_KEY1 IS NULL) AND 
    (c1.U_KEY1 NOT LIKE '%OTHER%' OR c1.U_KEY1 IS NULL) AND 
    (c1.U_KEY1 NOT LIKE '%TENANT%' OR c1.U_KEY1 IS NULL) 
ORDER BY C1.CONTACT 
+0

Radu, с каждым куском и клетчаткой в ​​костях и теле, благодарю вас, сэр. Я изучу это и удостоверяюсь, что знаю и понимаю его в будущем. Очень ценится. –

+0

@Absurd_Introspective Это базовый синтаксис SQL. Вы можете посмотреть здесь, чтобы [быстро прочитать об этих концепциях] (https://technet.microsoft.com/en-us/library/bb264565%28v=sql.90%29.aspx). –

+0

Это отличная информация, спасибо @Radu Gheorghiu –

Смежные вопросы