Что мне не хватает в этом запросе SQL доступа? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь получить конкретную информацию из нескольких таблиц, используя функцию INNER JOIN, и мне кажется, что у меня проблема с синтаксисом - слишком много или слишком мало ().Что думает сообщество?

SELECT Employee.EmployeeID
    ,Service.HoursWorked
FROM (
    Equipment INNER JOIN (Equipment Repair)
        ON Equipment.EquipmentID = Equipment Repair.RepairID
    )
INNER JOIN (
    (
        (
            Service INNER JOIN EMPLOYEE
                ON Service.ProductID = EMPLOYEE.EmployeeID
            ) INNER JOIN (
            OWNER INNER JOIN Property
                ON OWNER.OwnerID = Property.OwnerID
            )
        INNER JOIN SubProperty
            ON Property.PropertyID = SubProperty.PropertyID
        )
    ON Service.PropertyID = Subproperty.PropertyID
    )
INNER JOIN TrainingCourse
    ON EMPLOYEE.EmployeeID = TrainingCourse.EmployeeID
        ON Equipment.EquipmentID = TrainingCourse.EquipmentID ORDER BY Employee.EmployeeID

1 Ответ

0 голосов
/ 28 февраля 2019

Ваш запрос пытается объединить несколько таблиц, но, возможно, вы также пытаетесь использовать скобки?Это не имеет эффекта, которого вы могли бы ожидать здесь.

Без (очевидно?) Ложных скобок, я бы понял, что этот запрос означает следующее:

SELECT
    Employee.EmployeeID
    ,Service.HoursWorked
FROM Equipment
    INNER JOIN (Equipment Repair)
        ON Equipment.EquipmentID = Equipment Repair.RepairID
    INNER JOIN Service
    INNER JOIN EMPLOYEE
        ON Service.ProductID = EMPLOYEE.EmployeeID
    INNER JOIN OWNER
    INNER JOIN Property
        ON OWNER.OwnerID = Property.OwnerID
    INNER JOIN SubProperty
        ON Property.PropertyID = SubProperty.PropertyID
        ON Service.PropertyID = Subproperty.PropertyID
    INNER JOIN TrainingCourse
        ON EMPLOYEE.EmployeeID = TrainingCourse.EmployeeID
        ON Equipment.EquipmentID = TrainingCourse.EquipmentID
ORDER BY Employee.EmployeeID

Но это все еще имеетошибки, поскольку во многих объединениях отсутствуют условия объединения, а в некоторых - несколько условий объединения.

Вместо этого вам нужно подумать о операции проецирования , которую вы пытаетесь выразить.Какие столбцы, из каких таблиц должны появиться в наборе результатов (это говорит о том, к каким таблицам нужно присоединиться), и при каких условиях строка из таблицы Foo должна появляться в общем наборе результатов (это говорит о том, что условие объединения для этой таблицы).

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