2014-12-13 2 views
-1

Почему существует ошибка =>uknown column devgeo.id в части всего запроса? Ниже.коррелированный запрос в соединении MySQL

' select devgeo.id from device_geolocation devgeo inner join (select concat(''received_posts_'', cast(devgeo.id as char))) rcv_posts on(devgeo.id=rcv_posts.id)', 

Кроме того, почему установка @a=devgeo.id и использование @a в cast(@a as char) дает ошибку, что нет никакого столбца в where? Ниже.

rcv_posts.post_id != ', cast(post_id as char), 

Во-первых, я считаю, что каждый подзапрос имеет доступ к его родительским псевдонимам запроса. Во-вторых, как я испытал при реализации первой части всего запроса в разделе where с использованием оператора exists, но произошла такая же ошибка - unknown column devgeo.id. После использования пользовательской переменной произошла ошибка - unknown column, но для имени объединенной таблицы в операторе exists.

@for Гордон

set @q = (select concat('insert into ', created_table_name, 
          ' select @a=devgeo.id from device_geolocation devgeo inner join (select concat(''received_posts_'', cast(@a as char))) rcv_posts on(devgeo.id=rcv_posts.id)', 
          ' where devgeo.id != ', cast(deviceid as char), 
          ' and devgeo.id != ', cast(post_device_id as char), 
          ' and rcv_posts.post_id != ', cast(post_id as char),          
          ' limit ', cast(x as char))); 
+4

Ваш запрос не имеет смысла. Вы должны лучше представить свой фактический запрос в вопросе. Например, столбцы 'join' не определены. В одном столбце в подзапросе не указан псевдоним. Нет предложения 'from', но, вероятно, он есть. –

+0

Что вы подразумеваете под словом join columns? Из предложения в начале. – programmist

ответ

0

Это важная часть вашего запроса:

select @a=devgeo.id 
from device_geolocation devgeo inner join 
     (select concat(''received_posts_'', cast(@a as char)) 
    ) rcv_posts 
     on(devgeo.id=rcv_posts.id)', 
         ' 

Это не имеет никакого смысла. Столбец rcv_posts.id не определен, поэтому условие on не будет выполнено, независимо от того, что находится в подзапросе. Возможно, ваше намерение:

select @a = devgeo.id 
from device_geolocation devgeo cross join 
     (select concat(''received_posts_'', cast(@a as char)) as var 
    ) 

Или, возможно, вы собираетесь иметь пункт в подзапроса from.

+0

Мне нужно обратиться к таблице, сформированной подзапросом. Не должно быть идентификатора в столбце post_id received_posts_X. – programmist

+0

И все же вы ссылаетесь на 'rcv_posts.id' в разделе' on'. –

+0

Ошибка: Неизвестный столбец 'rcv_posts.post_id' в 'where clause' – programmist

Смежные вопросы