2012-05-08 10 views
7

¿Cómo corregiría este error configurando un alias? de error: # 1248 - Cada tabla derivada debe tener su propio aliaserror de mySQL: # 1248 - Cada tabla derivada debe tener su propio alias

SELECT 
    entry_id, 
    author_id, 
    title, 
    status 
FROM exp_channel_titles 

LEFT JOIN 
(SELECT 
    entry_id, 
    field_id_14, 
    field_id_15, 
    field_id_25, 
    field_id_27, 
    field_id_28, 
    field_id_29, 
    field_id_30, 
    field_id_31, 
    field_id_32, 
    field_id_33, 
    field_id_34, 
    field_id_35 
FROM exp_channel_data 
WHERE entry_id = exp_channel_titles.entry_id) 

LEFT JOIN 
(SELECT 
    member_id, 
    email 
FROM exp_members 
WHERE member_id = exp_channel_titles.author_id) 

WHERE title LIKE %Member% 
AND status = 'complete' 

Respuesta

18

Bueno, como dice el error, hay que nombrar cada tabla derivada. Por ejemplo

(SELECT 
    member_id, 
    email 
FROM exp_members 
WHERE member_id = exp_channel_titles.author_id) 

Es una tabla derivada. Añadir un nombre así:

(SELECT 
    member_id, 
    email 
FROM exp_members 
WHERE member_id = exp_channel_titles.author_id) tempTableNameGoesHere 

(Creo que estoy seguro de que no hay necesidad de un as entre el soporte y el nombre, pero supongo que se puede probar, o mirar hacia arriba desde aquí;))

Su pregunta de seguimiento (cuánto tiempo vamos a hacer esto? :))

WHERE title LIKE %Member% 

debería ser

WHERE title LIKE '%Member%' 
+0

(esto vale para todas las tablas derivadas, por supuesto, no solo para esta) – Nanne

+0

gracias ... ahora recibo otro error después de usar el ejemplo de Imdad. ¿algún consejo? sintaxis para usar cerca de 'WHERE ect.title LIKE% Member% AND ect.status =' complete 'LIMIT 0, 30' en la línea 33 – acctman

+1

Deberías poner '' 'alrededor de 'like' – Nanne

1
SELECT 
    ect.entry_id, 
    ect.author_id, 
    ect.title, 
    ect.status 
FROM exp_channel_titles as ect 

LEFT JOIN 
(SELECT 
    entry_id, 
    field_id_14, 
    field_id_15, 
    field_id_25, 
    field_id_27, 
    field_id_28, 
    field_id_29, 
    field_id_30, 
    field_id_31, 
    field_id_32, 
    field_id_33, 
    field_id_34, 
    field_id_35 
FROM exp_channel_data) as ecd 
ON ecd.entry_id = ect.entry_id 

LEFT JOIN 
(SELECT 
    member_id, 
    email 
FROM exp_members) as exm 
ON exm.member_id = ect.author_id 

WHERE ect.title LIKE '%Member%' 
AND ect.status = 'complete' 
+0

gracias ahora recibo este error ... # 1064 - Tiene un error en su sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de 'WHERE ect.title LIKE% Member% AND ect.status =' complete 'LIMIT 0, 30' en la línea 33 – acctman

+1

revise la consulta actualizada – Imdad

+0

gracias Imadad that trabajado tipo de. Creo que mis consultas son incorrectas Obtengo todos los resultados Entry_id Author_id Title Status ... pero quiero que todos los campos_ * y correos electrónicos aparezcan en los resultados – acctman

Cuestiones relacionadas