2012-02-01 3 views
1

Прежде всего, я не разработчик SQL. Поэтому мне понадобилась помощь в получении некоторой информации из трех таблиц ниже.Как написать sql-запрос из этих таблиц

Я хочу, чтобы получить names, order date и product code для тех, кто сделал заказ на продукт с product code = 401.1201

Как я написать запрос SQL для извлечения информации из таблиц?

dbo.tblMaterial

  • MaterialId (PK, INT, не равно нулю)
  • CanBeOrdered (бит, не равно нулю)
  • Имя (NVARCHAR (200), не равно нулю)
  • Цена (десятичная (18,2), ноль)
  • Код продукта (nvarchar (50), ноль)

dbo.tblMaterialOrder

  • MaterialOrderId (ПК, Int, не равно нулю)
  • MembershipUserId (uniqueidentifyer, не равно нулю)
  • FirstName (NVARCHAR (50), не равно нулю)
  • ЬазШате (NVARCHAR (100), не равно нулю)
  • ДатаРазмещения (DateTime, не равно нулю)

dbo.tblMaterialOrderItem

  • MaterialOrderItemId (ПК, Int, не равно нулю)
  • MembershipUserId (uniqueidentifyer, не равно нулю)
  • ItemsCount (интермедиат, не равно нулю)
  • ItemPrice (интермедиат, не нулевой)
  • MaterialOrder_MaterialOrderId (FK, INT, а не нулевой)
  • Material_MaterialId (FK, INT, а не нулевой)

Я попытался ...

Select * From dbo.tblMaterialOrder mo Where Exists (Select MembershipUserId From 
dbo.tblMaterialOrderItem Where dbo.tblMaterialOrderItem.Material_MaterialId = 
(Select MaterialId From dbo.tblMaterial Where (ProductCode = '401.1201'))) 

и

Select * from dbo.tblMaterialOrder, dbo.tblMaterialOrderItem, dbo.tblMaterial 
Where 
dbo.tblMaterialOrderItem.Material_MaterialId = '248' And 
dbo.tblMaterialOrderItem.MaterialOrder_MaterialOrderId = 
dbo.tblMaterialOrder.MaterialOrderId 

без успеха.

+4

Является ли эта школа работает? Вы пытались написать SQL, который вы можете поделиться с нами, чтобы мы могли указать вам в правильном направлении? –

+0

я судимый много, это моя лучшая попытка: – Andy

+0

Select * From dbo.tblMaterialOrder мес Где EXISTS (Выбрать MembershipUserId Из dbo.tblMaterialOrderItem Где dbo.tblMaterialOrderItem.Material_MaterialId = (Выбрать MaterialId Из dbo.tblMaterial Где (ProductCode = ' 401.1201'))) – Andy

ответ

0

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

SELECT 
    tblMaterial.Name, 
    tblMaterialOrder.OrderDate, 
    tblMaterial.ProductCode 
FROM 
    tblMaterial 
    JOIN tblMaterialOrderItem 
     ON tblMaterial.MaterialId=tblMaterialOrderItem.Material_MaterialId 
    JOIN tblMaterialOrder 
     ON tblMaterialOrder.MaterialOrderId=tblMaterialOrderItem.MaterialOrder_MaterialOrderId 
WHERE 
    tblMaterial.ProductCode='401.1201' 
0
SELECT 
    M.NAME 
,M.MATERIALID 
,O.ORDERDATE 
FROM MATERIAL M 
LEFT JOIN ORDERITEM OI ON M.MATERIALID = OI.MATERIAL_MATERIALID 
LEFT JOIN ORDER O ON OI.MaterialOrder_MaterialOrderId = O.MaterialOrderId 
WHERE M.MATERIALID = '401.1201' 
0

Попробуйте непроверенную Skript:

select a.name, b.orderdate, a.productcode 
from tblMaterial a left outer join tblMaterialOrderItem b 
on a.MaterialId = b.Material_MaterialId 
left outer join tblMaterialOrder c 
on c.MaterialOrder_MaterialOrderId = b.MaterialOrderId 
where a.productcode = '401.1201' 
Смежные вопросы