Как объединить 7 таблиц в SQL с помощью INNER JOIN - PullRequest
0 голосов
/ 18 апреля 2019

Я создаю хранимую процедуру для объединения 7 таблиц в SQL с использованием INNER JOIN, однако получаю сообщение об ошибке с неправильным синтаксисом.

Я пытался настроить форматирование, но не могу получить правильный синтаксис.Кто-нибудь знает, где я ошибся?Я получаю сообщение об ошибке

Неверный синтаксис рядом с "ГДЕ"

Мой код:

CREATE PROCEDURE [dbo].[spInvoicing]
    @InvoiceId INT
AS
BEGIN
    SELECT
        tblInvoices.InvoiceId, tblInvoices.InvoiceDate, 
        tblClients.Firstname, tblClients.Surname, tblClients.Address, tblClients.City, 
        tblClients.Postcode, tblClients.Email, tblClients.Phone, 
        tblAppointments.AppointmentId, tblAppointments.DateOfAppointment, 
        tblProductsUsed.ProductsUsedId, tblProducts.ProductName, tblProductsUsed.Quantity, 
        tblPointofSale.SaleId, tblPointOfSale.CostOfProducts, tblPointOfSale.CostOfServices, 
        tblPointOfSale.VAT, tblInvoices.SaleAmount, tblInvoices.PaymentMethod 
    FROM
        tblClients 
    INNER JOIN
        tblAppointments ON tblClients.ClientId = tblAppointments.ClientId  
    INNER JOIN
        tblPointOfSale 
    INNER JOIN
        tblInvoices ON tblPointOfSale.SaleId = tblInvoices.SaleId 
    INNER JOIN
        tblProductsUsed 
    INNER JOIN
        tblProducts ON tblProductsUsed.ProductId = tblProducts.ProductId 
    INNER JOIN
        tblServicesRendered 
    INNER JOIN 
        tblServices ON tblServicesRendered.ServiceId = tblServices.ServiceId ON tblServicesRendered.AppointmentId =  tblAppointments.AppointmentId 
        ON tblPointOfSale.AppointmentId = tblAppointments.AppointmentId 
        AND tblProductsUsed.SaleId = tblPointOfSale.SaleId 
        AND tblPointOfSale.ClientId = tblClients.ClientId
    WHERE 
        tblInvoices.InvoiceId = @InvoiceId
END

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019

Ваши СОЕДИНЕНИЯ немного зашифрованы. Попробуйте это ниже, и посмотрите, исправит ли это синтаксическую ошибку.

Всегда старайтесь, чтобы ваши СОЕДИНЕНИЯ следовали формату INNER JOIN [Table2] ON [Table2].[Field1] = [Table1].[Field1]

FROM tblClients
    INNER JOIN tblAppointments ON tblClients.ClientId = tblAppointments.ClientId
    INNER JOIN tblPointOfSale ON tblPointOfSale.AppointmentId = tblAppointments.AppointmentId
        AND tblPointOfSale.ClientId = tblClients.ClientId
    INNER JOIN tblInvoices ON tblPointOfSale.SaleId = tblInvoices.SaleId 
    INNER JOIN tblProductsUsed ON tblProductsUsed.SaleId = tblPointOfSale.SaleId
    INNER JOIN tblProducts ON tblProductsUsed.ProductId = tblProducts.ProductId 
    INNER JOIN tblServicesRendered ON tblServicesRendered.AppointmentId =  tblAppointments.AppointmentId
    INNER JOIN tblServices ON tblServicesRendered.ServiceId = tblServices.ServiceId
1 голос
/ 18 апреля 2019

Я просто скопировал и вставил ваш код в этот сайт - http://poorsql.com/ и это выдвинуло на первый план ошибку для Вас (Вы пропускаете И в соединениях). Как сказал @DBro - привыкните ставить свои JOIN-ы на новую строку и форматировать их немного по-другому, и у вас будет гораздо меньше проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...