Как перевести mssql запрос в mysql ?

Discussion in 'PHP' started by drkrol, 24 Dec 2016.

  1. drkrol

    drkrol New Member

    Joined:
    22 Jul 2015
    Messages:
    69
    Likes Received:
    2
    Reputations:
    0
    Здравствуйте. Есть вот такой mssql запрос:

    PHP:
    DECLARE @START DATE '2016-12-12'; -- Новая дата заезда
    DECLARE @END DATE '2016-12-20'; -- Новая дата выезда
    DECLARE @today DATE '2016-12-11';
    UPDATE  main
    SET     numbernomer 
    NULL
    WHERE   datestart 
    > @today;
    DECLARE @
    mainnumber INT;
    while 
    EXISTS (SELECT FROM main WHERE numbernomer IS NULL)
    BEGIN
        SELECT top
    (1) @mainnumber id
        FROM    main
        WHERE   numbernomer IS NULL
        ORDER BY datestart ASC
    datediff(DAYdatestartdateendDESC;
        
    UPDATE m0
        SET     numbernomer 
    m1.nomer
        FROM    main m0
                CROSS apply 
    (SELECT top 1 a.nomer
                            FROM    allnomer a
                                    LEFT JOIN main m
                                    ON a
    .nomer m.numbernomer
                                    
    AND DATEDIFF(DAYm.datestartm0.dateend) * DATEDIFF(DAYm.dateendm0.datestart) <= 0
                                    LEFT JOIN 
    (SELECT m2.numbernomerMAX(m2.dateend) AS dateend FROM main m2 GROUP BY m2.numbernomer) AS m2
                                            ON a
    .nomer m2.numbernomer
                            WHERE a
    .TYPE 'lux' AND m.numbernomer IS NULL
                            ORDER BY datediff
    (DAYm2.dateendm0.datestart), a.nomer
                            
    ) AS m1
        WHERE   m0
    .id = @mainnumber;
    END;
    SELECT a.nomer
    FROM allnomer a
    LEFT JOIN main m
      ON a
    .nomer m.numbernomer
      
    AND DATEDIFF(DAYm.datestart, @END) * DATEDIFF(DAYm.dateend, @START) <= 0
    WHERE a
    .TYPE 'lux' AND m.numbernomer IS NULL;
    Подскажите пожалуйста, что нужно изменить, чтобы этот запрос работал в mysql? Я, кроме того, что нужно decale на set поменять и тип данных убрать, ничего не знаю. Прошу вашей помощи
    P.S. Запрос должен будет выполняться в этой таблице: http://sqlfiddle.com/#!9/81225
     
  2. pas9x

    pas9x Elder - Старейшина

    Joined:
    13 Oct 2012
    Messages:
    423
    Likes Received:
    582
    Reputations:
    52
    Ты хочешь скрестить ежа с ужом. Просто так это не получится. Mysql и mssql - это совершенно разные базы данных.
    Этот код надо переписывать заново на мсскл и тестировать (что важно). Делать это за тебя никто не будет. Я-бы посоветовал тебе обратиться к фрилансеру.
     
  3. drkrol

    drkrol New Member

    Joined:
    22 Jul 2015
    Messages:
    69
    Likes Received:
    2
    Reputations:
    0
    А сколько, если не секрет, это может стоить? Здесь у меня проблема только с циклом.
     
    #3 drkrol, 25 Dec 2016
    Last edited: 25 Dec 2016
  4. pas9x

    pas9x Elder - Старейшина

    Joined:
    13 Oct 2012
    Messages:
    423
    Likes Received:
    582
    Reputations:
    52
    Рублей за 500-1000 сделают.

    Я подозреваю, твоя проблема у тебя намного больше, чем ты думаешь.
     
  5. racheev

    racheev New Member

    Joined:
    28 Dec 2016
    Messages:
    29
    Likes Received:
    2
    Reputations:
    0
    Абсолютно ничего менять не надо. Надо писать запрос заново исходя из задачи. Это не жигули разных моделей с одинаковыми движками где поменял карбюратор и поехал.