2016-10-21 2 views
0

Мой запросКак показать это outuput?

SELECT 
    CustBillPayment.CustomerId, CustBillPayment.Customer_Name, 
    CustBillPayment.CustBill_Total, CustBillPayment.CustBill_Paid, 
    CustBillPayment.CustBill_ReamingAmt, CustBillPayment.Created_Date, 
    CustBillPayment.Delivery_Date, CustBillPayment.Updated_Date, 
    Shirt_Mes.Shirt_Type, Shirt_Mes.Shirt_Qty, Shirt_Mes.Shirt_Price, 
    Shirt_Mes.Shirt_Total, 
    Pant_Mes.Pant_Type, Pant_Mes.Pant_QTY, Pant_Mes.Pant_Total, 
    Pant_Mes.Pant_Price 
FROM 
    ((CustBillPayment 
INNER JOIN 
    Shirt_Mes ON CustBillPayment.CustomerId = Shirt_Mes.CustomerId) 
INNER JOIN 
    Pant_Mes ON CustBillPayment.CustomerId = Pant_Mes.CustomerId) 
WHERE 
    CustBillPayment.CustomerId = 17 

Выход, как это и показывает Продублируйте строки:

CustomerId CustNm SType SQty SPrice STotal PType PQTY PTotal PPrice 
------------------------------------------------------------------------------- 
17   lakhan sType1 2 200  400 PType3 3   900  300 
17   lakhan sType1 2 200  400 PType4 1   400  400 
17   lakhan sType2 1 250  250 PType3 3   900  300 
17   lakhan sType2 1 250  250 PType4 1   400  400 

, но я хочу

CustomerId CustNm SType SQty SPrice STotal PType PQTY PTotal PPrice 
------------------------------------------------------------------------------- 
17   lakhan sType1 2 200  400 PType3 3   900  300 
17   lakhan sType2 1 250  250 PType4 1   400  400 
+0

Добавить группу и выбрать нужные поля: ** выберите [yourfileds] из группы (ваш исходный запрос) [yourfields] ** – Badiparmagi

+1

Вы пытались добавить 'Select Distinct' и' Group By' к этому запрос?Столбец SType кажется хорошим столбцом для группировки – Misiakw

ответ

0

Это должно работать:

SELECT DISTINCT CustBillPayment.CustomerId, 
      CustBillPayment.Customer_Name, 
      CustBillPayment.CustBill_Total, 
      CustBillPayment.CustBill_Paid, 
      CustBillPayment.CustBill_ReamingAmt, 
      CustBillPayment.Created_Date, 
      CustBillPayment.Delivery_Date, 
      CustBillPayment.Updated_Date, 
      Shirt_Mes.Shirt_Type, 
      Shirt_Mes.Shirt_Qty, 
      Shirt_Mes.Shirt_Price, 
      Shirt_Mes.Shirt_Total, 
      Pant_Mes.Pant_Type, 
      Pant_Mes.Pant_QTY, 
      Pant_Mes.Pant_Total, 
      Pant_Mes.Pant_Price 
    FROM ((CustBillPayment INNER JOIN Shirt_Mes ON CustBillPayment.CustomerId = Shirt_Mes.CustomerId) INNER JOIN 
     Pant_Mes ON CustBillPayment.CustomerId = Pant_Mes.CustomerId) 
WHERE CustBillPayment.CustomerId = 17 
GROUP BY Shirt_Mes.Shirt_Type 
+0

Plz Предложить другой запрос – sachin

1

Вы не можете SELECT DISTINCT, но другим может быть полезно. Для вас ответ на вопрос Редактировать.

Ключевое слово DISTINCT содержит уникальные строки. Чтобы узнать больше об этом, читайте это: http://www.w3schools.com/sql/sql_distinct.asp.

EDIT:

Теперь я вижу проблему, я не заметил, что цифры не соответствуют ранее. Ключевое слово DISTINCT в этом случае не поможет. JOIN соединяет таблицу Shirt_Mes, но есть две записи, что означает, что она создаст две строки. Следующий JOIN объединяет таблицу Pant_Mes и условие также выбирает две записи из этой таблицы. Каждая строка из ранее расширена для этих двух записей. В этом случае он производит 2 x 2 строки.

Я думаю, это плохая схема таблиц. Вы можете сделать два запроса и объединить результаты в логике приложения:

SELECT 
    CustBillPayment.CustomerId, 
    CustBillPayment.Customer_Name, 
    CustBillPayment.CustBill_Total, 
    CustBillPayment.CustBill_Paid, 
    CustBillPayment.CustBill_ReamingAmt, 
    CustBillPayment.Created_Date, 
    CustBillPayment.Delivery_Date, 
    CustBillPayment.Updated_Date, 
    Shirt_Mes.Shirt_Type, 
    Shirt_Mes.Shirt_Qty, 
    Shirt_Mes.Shirt_Price, 
    Shirt_Mes.Shirt_Total 
FROM 
    CustBillPayment 
    JOIN Shirt_Mes ON CustBillPayment.CustomerId = Shirt_Mes.CustomerId 
WHERE 
    CustBillPayment.CustomerId=17 

и

SELECT 
    CustBillPayment.CustomerId, 
    CustBillPayment.Customer_Name, 
    CustBillPayment.CustBill_Total, 
    CustBillPayment.CustBill_Paid, 
    CustBillPayment.CustBill_ReamingAmt, 
    CustBillPayment.Created_Date, 
    CustBillPayment.Delivery_Date, 
    CustBillPayment.Updated_Date, 
    Pant_Mes.Pant_Type, 
    Pant_Mes.Pant_QTY, 
    Pant_Mes.Pant_Total, 
    Pant_Mes.Pant_Price 
FROM 
    CustBillPayment 
    JOIN Pant_Mes ON CustBillPayment.CustomerId = Pant_Mes.CustomerId 
WHERE 
    CustBillPayment.CustomerId=17 

Или вы можете поместить все товары в одной таблице (я предполагаю, что для интернет-магазина или что-то подобное). Лучше бы изменить схему таблицы, но если у вас есть действительно хорошая причина, почему для хранения товаров в отдельных таблицах (и типа товара не хорошая причина), вы можете сделать этот запрос:

SELECT 
    CustBillPayment.CustomerId, 
    CustBillPayment.Customer_Name, 
    CustBillPayment.CustBill_Total, 
    CustBillPayment.CustBill_Paid, 
    CustBillPayment.CustBill_ReamingAmt, 
    CustBillPayment.Created_Date, 
    CustBillPayment.Delivery_Date, 
    CustBillPayment.Updated_Date, 
    Goods_Mes.Type, 
    Goods_Mes.Qty, 
    Goods_Mes.Price, 
    Goods_Mes.Total 
FROM 
    CustBillPayment 
    JOIN (SELECT Shirt_Mes.Shirt_Type AS Type, 
       Shirt_Mes.Shirt_Qty AS Qty, 
       Shirt_Mes.Shirt_Price AS Price, 
       Shirt_Mes.Shirt_Total AS Total, 
       Shirt_Mes.CustomerId FROM Shirt_Mes 
     UNION 
     SELECT Pant_Mes.Pant_Type AS Type, 
       Pant_Mes.Pant_Qty AS Qty, 
       Pant_Mes.Pant_Price AS Price, 
       Pant_Mes.Pant_Total AS Total, 
       Pant_Mes.CustomerId FROM Pant_Mes 
     ) Goods_Mes ON CustBillPayment.CustomerId = Goods_Mes.CustomerId 
WHERE 
    CustBillPayment.CustomerId=17 

Чтобы сделать запрос лучше , вы можете удалить Shirt_Total и Pant_Total и заменить Goods_Mes.Total на Goods_Mes.Qty * Goods_Mes.Price.

0

Попробуйте этот запрос

SELECT CBP.CustomerId, CBP.Customer_Name, 
     CBP.CustBill_Total, CBP.CustBill_Paid, 
     CBP.CustBill_ReamingAmt, CBP.Created_Date, 
     CBP.Delivery_Date, CBP.Updated_Date, 
     SMES.Shirt_Type, SMES.Shirt_Qty, SMES.Shirt_Price, 
     SMES.Shirt_Total, PMES.Pant_Type, PMES.Pant_QTY,  
     PMES.Pant_Total, PMES.Pant_Price 
FROM CustBillPayment AS CBP 
LEFT JOIN Shirt_Mes AS SMES ON CBP.CustomerId = SMES.CustomerId 
LEFT JOIN Pant_Mes AS PMES ON CBP.CustomerId = PMES.CustomerId 
WHERE CBP.CustomerId = 17 
0

Четкая и группа по будет работать только в том случае, если записи являются уникальными.

Distinct все равно вернет все 4 строки из-за того, что pant_type отличается в каждом ряду. То же самое касается группы.

Какой конечный результат вы ожидаете, поскольку требуемый вывод в верхней части не имеет смысла в отношении pant_type?

+0

CustomerId CustNm SType SQty SPrice STotal PType PQTY PTotal PPrice ----------------------- -------------------------------------------------- ------ 17 lakhan sType1 2 200 400 PType3 3 900 300 17 lakhan sType2 1 250 250 PType4 1 400 400 – sachin

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