Вложенные объединения скрывают имена таблиц - PullRequest
4 голосов
/ 17 мая 2010

У меня есть три таблицы: поставщики, детали и типы. Мне нужно объединить их, различая столбцы с одинаковыми именами (скажем, «id») в трех таблицах. Я хотел бы успешно выполнить этот запрос:

CREATE VIEW Everything AS
SELECT Suppliers.name as supplier, 
       Parts.id, 
       Parts.description, 
       Types.typedesc as type
FROM Suppliers JOIN (Parts JOIN Types ON Parts.type_id = Types.id)
ON Suppliers.id = Parts.supplier_id;

Моя СУБД (sqlite) жалуется, что "такого столбца нет (Parts.id)". Я предполагаю, что он забывает имена таблиц после завершения JOIN, но как я могу ссылаться на столбец id, который принадлежит таблице Parts?

Ответы [ 2 ]

6 голосов
/ 17 мая 2010

Ваш синтаксис ANSI-92 JOIN неверен - используйте:

CREATE VIEW Everything AS
  SELECT Suppliers.name as supplier, 
         Parts.id, 
         Parts.description, 
         Types.typedesc as type
    FROM Suppliers 
    JOIN Parts ON Suppliers.id = Parts.supplier_id
    JOIN Types ON Parts.type_id = Types.id
0 голосов
/ 17 мая 2010

Пока вы квалифицируете соединение на основе имени таблицы Alias.Field, у вас не должно быть проблем ... типа

CREATE VIEW Everything AS 
      SELECT 
            Suppliers.name as supplier, 
            Parts.id, 
            Parts.description, 
            Types.typedesc as type 
         FROM 
            Suppliers,
            Parts,
            Types
         WHERE
                Supplier.ID = Parts.Supplier_ID
            AND Parts.Type_ID = Types.ID
         ORDER BY
            (whatever columns)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...