Saltar al contenido

#1222 – Las declaraciones SELECT utilizadas tienen un número diferente de columnas

Pudiera darse el caso de que encuentres algún error en tu código o trabajo, recuerda probar siempre en un entorno de testing antes añadir el código al trabajo final.

Solución:

La primera declaración en UNION devuelve cuatro columnas:

SELECT b.id AS id, 
       b.pid AS pid, 
       b.message AS message, 
       b.date AS date 
  FROM wall_posts AS b 

el segundo vuelve seisporque el * se expande para incluir todas las columnas de WALL_POSTS:

SELECT b.id, 
       b.date, 
       b.privacy,
       b.pid. 
       b.uid message
  FROM wall_posts AS b 

los UNION y UNION ALL los operadores requieren que:

  1. Existe el mismo número de columnas en todas las declaraciones que componen la consulta de UNION.
  2. Los tipos de datos tienen que coincidir en cada posición/columna

Usar:

FROM ((SELECT b.id AS id, 
             b.pid AS pid, 
             b.message AS message, 
             b.date AS date 
        FROM wall_posts AS b 
        JOIN Friends AS f ON f.id = b.pid 
       WHERE f.buddy_id = '1' AND f.status = 'b'
    ORDER BY date DESC
       LIMIT 0, 10)
      UNION
      (SELECT id,
              pid,
              message,
              date
         FROM wall_posts
        WHERE pid = '1'
     ORDER BY date DESC
        LIMIT 0, 10))

estas tomando el UNION de una relación de 4 columnas (id, pid, messagey date) con una relación de 6 columnas (* = las 6 columnas de wall_posts). SQL no te permite hacer eso.

(
        SELECT b.id AS id, b.pid AS pid, b.message AS message, b.date AS date FROM 
        wall_posts AS b 
        JOIN Friends AS f ON f.id = b.pid 
        WHERE f.buddy_id = '1' AND f.status = 'b'
        ORDER BY date DESC
        LIMIT 0, 10
    )
    UNION
    (
        SELECT id, pid  , message , date  
        FROM
        wall_posts
        WHERE pid = '1'
        ORDER BY date DESC
        LIMIT 0, 10
    )

Estabas seleccionando 4 en la primera consulta y 6 en la segunda, así que únelos.

Aquí puedes ver las reseñas y valoraciones de los usuarios

Si aceptas, puedes dejar un enunciado acerca de qué te ha parecido esta crónica.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *