Как слева присоединиться к данным матча по порядку - PullRequest
0 голосов
/ 26 мая 2020

То, что я пытаюсь сделать, это связать пользователя с последней / следующей встречей, которая упорядочивается по нескольким ситуациям, например, сначала статус = 2, затем время, подтверждено и так далее. Я отфильтровал и отсортировал их, и это выглядит хорошо, однако, когда я пытаюсь получить данные первого совпадения с помощью DISTINCT, он возвращается к порядку по системе и дает мне неправильные данные.

Есть ли у вас какие-либо предложения?

SELECT User.*, NextAppointment.*, LastAppointment.*                  
FROM( User )
LEFT JOIN(
    SELECT *, COUNT(DISTINCT( user_id ))
        FROM( SELECT Appointment.id, Appointment.user_id
              FROM( Appointment )
              WHERE Appointment.from_time>='2020-05-26'
                AND Appointment.status=1
              ORDER BY Appointment.from_time, Appointment.confirmed=1 DESC, Appointment.id DESC
            )NextAppointment_sub

        GROUP BY user_id 
    )NextAppointment    ON NextAppointment.user_id = User.id

LEFT JOIN(
    SELECT *, COUNT(DISTINCT( user_id ))
        FROM( SELECT Appointment.id, Appointment.user_id
              FROM( Appointment )
              WHERE Appointment.from_time<='2020-05-26'
              ORDER BY Appointment.status=2 DESC, Appointment.from_time DESC, Appointment.confirmed=1 DESC, Appointment.status=1 DESC, Appointment.id DESC
            )LastAppointment_sub

        GROUP BY user_id 
    )LastAppointment    ON LastAppointment.user_id = User.id AND LastAppointment.from_time >= User.FirstRequest

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