2015-07-23 4 views
0

У меня есть запрос.ИЛИ Оператор во внутреннем соединении

SELECT VendorID,VendorName,VendorType,FirstName,LastName, 
    VendorCompany,Contact,Phone,AltContact,Email,OpeningBalance,OpeningDate,VendorAccountNo ,Photo,VendorNotes FROM 
    Vendor inner JOIN VendorTypeTable ON Vendor.VendorTypeID=VendorTypeTable.VendorTypeID 

Теперь с другой стороны, я хочу также получить те поставщик, те, которые VendorTypeID в нуле, как этот запрос.

SELECT VendorID,VendorName,FirstName,LastName, 
VendorCompany,Contact,Phone,AltContact,Email,OpeningBalance,OpeningDate,VendorAccountNo ,Photo,VendorNotes FROM 
Vendor WHERE VendorTypeID IS NULL; 

Как я могу объединить эти два запроса.

ответ

0

Хотя @Fireblade абсолютно правильно, иногда UNION является правильным ответом, если у вас есть два запроса, возвращающимся те же поля. Это позволяет вам настраивать производительность каждого из них независимо друг от друга.

SELECT VendorID,VendorName,VendorType,FirstName,LastName, 
VendorCompany,Contact,Phone,AltContact,Email, 
OpeningBalance,OpeningDate,VendorAccountNo ,Photo,VendorNotes FROM 
Vendor inner JOIN VendorTypeTable ON 
Vendor.VendorTypeID=VendorTypeTable.VendorTypeID 
UNION 
SELECT VendorID,VendorName,FirstName,LastName, VendorCompany, 
Contact,Phone,AltContact,Email,OpeningBalance,OpeningDate, 
VendorAccountNo ,Photo,VendorNotes FROM 
Vendor WHERE VendorTypeID IS NULL; 
+0

Это работает для меня. Спасибо Бадди :-) –

+0

Вы правы. Он работает, но он не заполняет мои требования. Мне нужно VendorID, VendorName, VendorType, где поле VendorType - VendorTypeTable. Итак, требуется соединение. Но Join не возвращает те записи, у которых VendorTypeID null. –

0

Что-то вроде этого

SELECT vendorid, 
     vendorname, 
     vendortype, 
     firstname, 
     lastname, 
     vendorcompany, 
     contact, 
     phone, 
     altcontact, 
     email, 
     openingbalance, 
     openingdate, 
     vendoraccountno, 
     photo, 
     vendornotes 
FROM vendor 
     INNER JOIN vendortypetable 
       ON vendor.vendortypeid = vendortypetable.vendortypeid 
        OR vendor.vendortypeid IS NULL 
+0

Это не дает правильного результата. Повтор записи много раз имеет vendorTypeID NULL из-за присоединения –

+0

@ A.RShaib. В этом случае вы можете добавить пример данных и ожидаемый результат. –

+0

Спасибо, что получил UNION. –

0

Вы также можете использовать левую внешнее соединение, как этот

SELECT vendorid, 
     vendorname, 
     vendortype, 
     firstname, 
     lastname, 
     vendorcompany, 
     contact, 
     phone, 
     altcontact, 
     email, 
     openingbalance, 
     openingdate, 
     vendoraccountno, 
     photo, 
     vendornotes 
FROM vendor 
     left outer JOIN vendortypetable 
       ON vendor.vendortypeid = vendortypetable.vendortypeid 
Смежные вопросы