Member239258 Ответов: 2

Как объединить 3 таблицы в SQL и отобразить результат


I want to connect 3 tables for data.

1)Products table (tbl_Prod)
Pid,Pname

2)Purchase Table(tbl_purc)
Pid,pqty,Purc_date

Sold Table (tbl_sold)
Pid,Sqty,sold_date

Result Required
1st date to 2nd date

Pid,pname,pqty-sqty = bal
101,soap, 100-20 = 80


Что я уже пробовал:

how to join 3 tables in sql and display the result

2 Ответов

Рейтинг:
2

OriginalGriff

Вероятно, вам придется улучшить эти таблицы, добавив столбец идентификатора к двум из них: SQL не позволит вам иметь две одинаковые строки, и это действительно легко продать один и тот же продукт в один и тот же день разным клиентам, например.

Но присоединиться к ним очень просто:

SELECT p.PID, p.PName, (pu.pqty - s.sqty) as Balance
FROM tbl_prod p
JOIN tbl_purc pu
   ON p.PID = pu.PID
JOIN tbl_sold s
   ON p.PID = s.PID AND s.sold_date = pu.purc_date


Рейтинг:
0

Sandeep Mewara

То, чем ОГ поделился выше, вероятно, было тем, что вы искали. Я бы посоветовал вам узнать о соединениях и попробовать себя.

Ссылаться:
Соединения (SQL Server) - SQL Server | Microsoft Docs[^]
Типы связей таблиц | Microsoft Docs[^]

Цитата:
Условие соединения определяет способ связи двух таблиц в запросе с помощью:

- Указание столбца из каждой таблицы, который будет использоваться для объединения. Типичное условие соединения определяет внешний ключ из одной таблицы и связанный с ним ключ в другой таблице.
- Указание логического оператора (например, = или <>,), который будет использоваться при сравнении значений из столбцов.

Пример (отличный от того, что вы спросили):
SELECT ProductID, Purchasing.Vendor.BusinessEntityID, Name
FROM Purchasing.ProductVendor JOIN Purchasing.Vendor
    ON (Purchasing.ProductVendor.BusinessEntityID = Purchasing.Vendor.BusinessEntityID)
WHERE StandardPrice > $10
  AND Name LIKE N'F%'

Select возвращает информацию о продукте и поставщике для любой комбинации деталей, поставляемых компанией, для которой название компании начинается с буквы F, а цена продукта составляет более 10 долларов США.