2010-07-29 9 views
8

no puedo por la vida de a averiguar por qué esto está erroringMYSQL ERROR 1248 (42000): Cada tabla derivada debe tener su propio alias

SELECT * FROM 
SELECT 
c.city_id, 
p.prop_ynow_id, 
p.propertyid, 
p.prop_add_value, 
p.name, 
picture, 
ifnull(p.address,'') as`location`, 
ifnull(city,'')as`city`, 
ifnull(ShortCut,'') as `state`, 
ifnull(p.zip,'') as `zip`, 
min(if(pr.minrent = 0,99999999,pr.minrent)) as minrent, 
max(pr.maxrent) as maxrent, 
'' as service, 
hood_id, 
ifnull(p.phone,'') as `phone`, 
latitude, 
longitude, 
min(CAST(pu.fullBath AS UNSIGNED)) as`minbath`, 
max(CAST(pu.fullBath AS UNSIGNED)) as`maxbath`, 
min(CAST(pu.Bed AS UNSIGNED)) as`minbed` , 
max(CAST(pu.Bed AS UNSIGNED)) as`maxbed`, 
'' as url, 
'' as source_id, 
'' as source_name, 
'' as addresscode, 
'' as citycode, 
'' as ctime, 
'' as paid, 
'' as similar_url, 
'' as created_at, 
'' as updated_at, 
'' as city_name, 
'' as service_listing_id 

FROM 
wiki_city_list c join propertyinfo p on c.city_id=p.city 
join ynow_rentwiki.Property_Unitlayout pu on p.prop_ynow_id=pu.P_Ident 
join (SELECT CAST(substring_index(if(Rent >0 ,Rent,RentLow),'.',1) AS UNSIGNED) as minrent, CAST(substring_index(if(Rent >0,Rent,Renthigh),'.',1) AS UNSIGNED) as maxrent,PRE_Ident,P_Ident,UNL_Ident,RTY_Ident from ynow_rentwiki.Property_rents where P_Ident in (3958, 4576, 4577) and (Rent!='' or (Rentlow!='' and Renthigh!=''))) as pr on pu.UNL_Ident=pr.UNL_Ident 
join state s on (p.state = s.stateid OR p.state = s.ShortCut) 
WHERE 
pu.Status='Active' 
and p.delete_date='0000-00-00' 

GROUP BY 
c.city_id, p.prop_ynow_id 

UNION 
SELECT 
c.city_id, 
p.prop_ynow_id, 
p.propertyid, 
p.prop_add_value, 
p.name, 
picture, 
ifnull(p.address,'') as`location`, 
ifnull(city,'')as`city`, 
ifnull(ShortCut,'') as `state`, 
ifnull(p.zip,'') as `zip`, 
min(if(pr.minrent = 0,99999999,pr.minrent)) as minrent, 
max(pr.maxrent) as maxrent, 
'' as service, 
hood_id, 
ifnull(p.phone,'') as `phone`, 
latitude, 
longitude, 
min(CAST(pu.fullBath AS UNSIGNED)) as`minbath`, 
max(CAST(pu.fullBath AS UNSIGNED)) as`maxbath`, 
min(CAST(pu.Bed AS UNSIGNED)) as`minbed` , 
max(CAST(pu.Bed AS UNSIGNED)) as`maxbed`, 
'' as url, 
'' as source_id, 
'' as source_name, 
'' as addresscode, 
'' as citycode, 
'' as ctime, 
'' as paid, 
'' as similar_url, 
'' as created_at, 
'' as updated_at, 
'' as city_name, 
'' as service_listing_id 

FROM 
wiki_city_list c join propertyinfo p on c.city_id=p.city 
join ynow_rentwiki.Property_Unitlayout pu on p.prop_ynow_id=pu.P_Ident 
join (SELECT CAST(substring_index(if(Rent >0 ,Rent,RentLow),'.',1) AS UNSIGNED) as minrent, CAST(substring_index(if(Rent >0,Rent,Renthigh),'.',1) AS UNSIGNED) as maxrent,PRE_Ident,P_Ident,UNL_Ident,RTY_Ident from ynow_rentwiki.Property_rents where P_Ident in (9744) and (Rent!='' or (Rentlow!='' and Renthigh!=''))) as pr on pu.UNL_Ident=pr.UNL_Ident 
join state s on (p.state = s.stateid OR p.state = s.ShortCut) 
WHERE 
pu.Status='Active' 
and p.delete_date='0000-00-00' 

GROUP BY 
c.city_id, p.prop_ynow_id 

UNION 
SELECT 
'' as prop_ynow_id, 
id as propertyid, 
0 as prop_add_value, 
t.name as name, 
'' as picture, 
t.address as location, 
t.city as city, 
s.ShortCut as state, 
t.zip as zip, 
CAST(REPLACE(REPLACE(t.price,'$',''),',','') as UNSIGNED) as minrent, 
'' as maxrent, 
t.service as service, 
'' as hood_id, 
'' as phone, 
t.latitude as latitude, 
t.longitude as longitude, 
t.bathrooms as minbath, 
'' as maxbath, 
t.bedrooms as minbed, 
'' as maxbed, 
t.url as url, 
t.source_id as source_id, 
t.source_name as source_name, 
t.addresscode as addresscode, 
t.citycode as citycode, 
t.ctime as ctime, 
t.paid as paid, 
t.similar_url as similar_url, 
t.created_at as created_at, 
t.updated_at as updated_at, 
SUBSTRING_INDEX(c.city_name,'_',1) as city_name,  
t.service_listing_id as service_listing_id 

FROM LBCPrimary.third_party_properties as t, LBCPrimary.wiki_city_list as c, LBCPrimary.state as s 
WHERE 
t.city in ('230') 
and 
address <> '' and 
t.city = c.city_id and 
c.city_state = s.stateid 

order by t.ctime 
desc 
limit 46 as a limit 0,50 
+0

Su consulta comienza con SELECT * FROM SELECT - ¿puede olvidar los corchetes? y debe ser SELECT * FROM (SELECT .... –

Respuesta

20

Significa exactamente lo que dice - cada uno derivado de mesa obligada tienen un alias. SELECT a.* FROM (SELECT ....)a

Actualización. Esto debería funcionar para usted:

SELECT xxx.* FROM 
(
    SELECT .... 
    FROM .... 
    UNION 
    (
     SELECT .... 
     FROM ..... 
     LIMIT 46 
    ) 
    LIMIT 50 
)xxx 
+1

No estoy seguro de lo que quieres decir ... He intentado añadir que existen, pero ahora tengo ERROR 1064 (42000): Usted tiene un error en su sintaxis SQL, consulte el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de 'como límite 0,50)' en la línea 144 – Trace

+0

Disculpe, no noté que una de sus tablas ya tenía alias a. Use un alias diferente - 'SELECCIONE xxxx. * FROM (SELECCIONAR ....) xxxx' – a1ex07

+0

Y cuando use alias para' SELECT ... FROM t1 JOIN t2 JOIN t3 ... 'también debería incluir SELECT en corchetes ('(SELECCIONAR ... DE t1 UNIRSE t2 UNIRSE a t3 ...) [AS] a'). Es por qué se queja en cerca de 'como límite 0,50)' en la línea 144 " – a1ex07

4

La primera línea de la consulta es

SELECT * FROM 

que parece ser innecesario (como las tres consultas unioned ya incluyen cláusulas SELECT y FROM).

Eliminar esta línea innecesaria debería resolver el problema; alternativamente, agregar un ( justo después de la primera línea y agregar un ) QRYALIAS al final también resolvería el problema.

Cuestiones relacionadas