Ответы пользователя по тегу MySQL
  • Как правильно составить SQL запрос?

    igruschkafox
    @igruschkafox
    Специалист по сопровождению БД MS SQL
    -- Создали таблицы
    CREATE TABLE counts (count_id INT IDENTITY (1,1) , count_name nVARCHAR(20))
    CREATE TABLE operation  (operation_id INT IDENTITY (1,1) ,operation_count_id INT, balance MONEY,operation_date DATETIME ,operation_name NVARCHAR(50))
    
    go
    -- Очищаем таблицы
    TRUNCATE TABLE counts
    TRUNCATE TABLE operation
    
    -- Заполняем данным
    INSERT INTO [dbo].[counts] ([count_name]) VALUES ('Первый счет')
    INSERT INTO [dbo].[counts] ([count_name]) VALUES ('Второй счет')
    INSERT INTO [dbo].[counts] ([count_name]) VALUES ('Третий счет')
    
    INSERT INTO [dbo].[operation]([operation_count_id],[balance],[operation_date],[operation_name])VALUES(1,'10.3','01-01-2015','Первая операция по первому счету')
    INSERT INTO [dbo].[operation]([operation_count_id],[balance],[operation_date],[operation_name])VALUES(1,'25.5','02-02-2015','Вторая операция по первому счету')
    INSERT INTO [dbo].[operation]([operation_count_id],[balance],[operation_date],[operation_name])VALUES(1,'34.4','03-03-2015','Третья операция по первому счету')
    
    INSERT INTO [dbo].[operation]([operation_count_id],[balance],[operation_date],[operation_name])VALUES(2,'11.7','01-01-2015','Первая операция по Второму счету')
    INSERT INTO [dbo].[operation]([operation_count_id],[balance],[operation_date],[operation_name])VALUES(2,'22.2','04-04-2015','Вторая операция по Второму счету')
    
    INSERT INTO [dbo].[operation]([operation_count_id],[balance],[operation_date],[operation_name])VALUES(3,'33.1','01-01-2015','Первая операция по Тертья счету')
    INSERT INTO [dbo].[operation]([operation_count_id],[balance],[operation_date],[operation_name])VALUES(3,'33.7','02-02-2015','Вторая операция по Третья счету')
    
    
    -- Запрос возвращает баланс последней операции по каждому счету
    SELECT c.count_id,c.count_name
    ,o2.balance
    ,o2.operation_name
     FROM counts c
     JOIN (
    SELECT operation_count_id,
     MAX(operation_date)  AS 'Max Date'
    FROM dbo.operation 
    GROUP BY operation_count_id
    
    ) o ON o.operation_count_id=c.count_id
    JOIN dbo.operation o2 ON o2.operation_count_id=o.operation_count_id AND o2.operation_date=o.[Max Date]
    Ответ написан
    Комментировать
  • Какие средства проектирования баз данных сейчас в тренде?

    igruschkafox
    @igruschkafox
    Специалист по сопровождению БД MS SQL
    (субъективно)
    VS +TFS
    Ответ написан