SQLite: используйте SELECT вместо TEMP TABLE - PullRequest
0 голосов
/ 06 июля 2018

У меня есть запрос SQLite, который создает временную таблицу, за которой следует оператор SELECT. Я хотел бы выяснить, как написать запрос без использования временной таблицы, чтобы я мог использовать его в качестве представления. Может кто-нибудь указать мне несколько примеров, где это делается?

1 Ответ

0 голосов
/ 06 июля 2018

Если вам не нужно использовать temptable в вашем view, вы можете использовать следующее утверждение для создания представления из вашего select:

    CREATE VIEW v_tracks 
    AS 
    SELECT
    trackid,
    tracks.name,
    albums.Title AS album,
    media_types.Name AS media,
    genres.Name AS genres
    FROM
    tracks

С этого момента вы просто используете следующий простой запрос:

    SELECT
    *
    FROM
    v_tracks;

Попробуйте здесь

и если вам нужно использовать временную таблицу в представлении, вы можете использовать CTEs, CTE - это временные результирующие наборы, которые определены в рамках выполнения одного оператора, и их можно использовать в представлениях.

Пример из здесь :

    CREATE VIEW vSalesStaffQuickStats
    AS
    WITH SalesBySalesPerson (SalesPersonID, NumberOfOrders, MostRecentOrderDate)
    AS
    (
          SELECT SalesPersonID, COUNT(*), MAX(OrderDate)
          FROM Sales.SalesOrderHeader
          GROUP BY SalesPersonID
    )
    SELECT E.EmployeeID,
    EmployeeOrders = OS.NumberOfOrders,
    EmployeeLastOrderDate = OS.MostRecentOrderDate,
    E.ManagerID,
    ManagerOrders = OM.NumberOfOrders,
    ManagerLastOrderDate = OM.MostRecentOrderDate
    FROM   HumanResources.Employee AS E
           INNER JOIN SalesBySalesPerson AS OS
               ON E.EmployeeID = OS.SalesPersonID
           LEFT OUTER JOIN SalesBySalesPerson AS OM
               ON E.ManagerID = OM.SalesPersonID 

Надеюсь, это поможет.

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