Я делаю это, когда получаю код ошибки: 1248. Каждая производная таблица должна иметь свой собственный псевдоним, может ли кто-нибудь помочь мне, почему это неправильно?

#mysql

Вопрос:

  SELECT a.telegram_name, a.full_name, a.role_id, a.user_id 
        from tbl_telegram_user a 
         LEFT JOIN ( 
        select a.owner_id, a.owner_name from tbl_agenda as a
        join ( 
         select a.type, a.message, a.status from tbl_message as a 
        join tbl_status as b 
        join (select * from tbl_agenda as a join tbl_message as b
         on a.type = b.type
         where a.type="/mom" and ( current_date BETWEEN from_time and to_time ) is not null)
        on a.status = b.status 
        where b.status_type = 'workLocation' or b.status_type = 'off') as b
     on a.type = b.type 
         where DATE(a.from_time) = DATE('2021-08-10 21:04:02')) as b 
         on a.telegram_name = b.owner_name 
         where b.owner_name is null AND a.user_id <> 0 
 

Ответ №1:

я думаю, что в строке 9 вы забыли псевдоним :

 SELECT a.telegram_name, a.full_name, a.role_id, a.user_id from tbl_telegram_user a LEFT JOIN ( select a.owner_id, a.owner_name from tbl_agenda as a join ( select a.type, a.message, a.status from tbl_message as a join tbl_status as b join (select * from tbl_agenda as a join tbl_message as b on a.type = b.type where a.type="/mom" and ( current_date BETWEEN from_time and to_time ) is not null) as "your alias" on a.status = b.status where b.status_type = 'workLocation' or b.status_type = 'off') as b on a.type = b.type where DATE(a.from_time) = DATE('2021-08-10 21:04:02')) as b on a.telegram_name = b.owner_name where b.owner_name is null AND a.user_id <> 0
 

Комментарии:

1. Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на наличие правильного синтаксиса для использования рядом с»вашим псевдонимом» в a.status = b.status, где b.status_type = ‘Рабочее местоположение’ или b.st » в строке 1 это ошибка, которую я получаю, когда выполняю вашу команду

2. теперь я хочу, чтобы между фронтимом и временем он не возвращал никакого результата, может ли кто-нибудь мне помочь

3. я думаю, что я только говорю вам, где вы забыли свой псевдоним, поэтому я пишу «ваш псевдоним», вы должны ввести свой собственный псевдоним, как вам нравится

4. я думаю, что удалите эту ДАТУ строки(‘2021-08-10 21:04:02’)) и используйте это «2021-08-10», просто попробуйте, может быть, он запустится

5. Я попробовал, и он показывает красный крестик =) наверное, нет

Ответ №2:

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

 SELECT a.telegram_name, a.full_name, a.role_id, a.user_id 
            from tbl_telegram_user a 
             LEFT JOIN ( 
            select a.owner_id, a.owner_name from tbl_agenda as a
            join ( 
             select a.type, a.message, a.status from tbl_message as a 
            join tbl_status as b 
            join (select * from tbl_agenda as a join tbl_message as b
             on a.type = b.type
             where a.type="/mom" and ( current_date BETWEEN from_time and to_time ) is not null) as a
            on a.status = b.status 
            where b.status_type = 'workLocation' or b.status_type = 'off') as b
         on a.type = b.type 
             where DATE(a.from_time) = DATE('2021-08-10 21:04:02')) as b 
             on a.telegram_name = b.owner_name 
             where b.owner_name is null AND a.user_id <> 0 
 

Комментарии:

1. Код ошибки: 1060. Дубликат имени столбца «тип»

2. теперь я хочу, чтобы между фронтимом и временем он не возвращал никакого результата, может ли кто-нибудь мне помочь