Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con una consulta #1241 - Operand should contain 1 column(s)

Estas en el tema de Problema con una consulta #1241 - Operand should contain 1 column(s) en el foro de Mysql en Foros del Web. Hola buenas a todos, tengo un problema con una consulta y espero que alguien me pueda echar un cable, os cuento: Tengo estas tablas alumnos: ...
  #1 (permalink)  
Antiguo 16/05/2012, 09:01
 
Fecha de Ingreso: abril-2012
Ubicación: Cadiz
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Problema con una consulta #1241 - Operand should contain 1 column(s)

Hola buenas a todos, tengo un problema con una consulta y espero que alguien me pueda echar un cable, os cuento:

Tengo estas tablas

alumnos:
*id_alum
(fk) id_usuario
fecha_reg

asignaturas:
*id_asig
nombre

alum_asig:
*id_alum
*id_asig
validado

La consulta que quiero realizar consiste, en que me devuelva los nombres de las asignaturas cuyo id_alum e id_asig no se encuentren dentro de la tabla de alum_asig, resumiendo, que la consulta saque los nombres de las asignaturas en las cuales el alumno no esta matriculado. Tengo mi consulta hecha, pero me da este error #1241 - Operand should contain 1 column(s), si alguien sabes como ayudarme se lo agradeceria muchísimo, dejo abajo mi consulta, gracias y un saludo a toda la comunidad ;)

Código MySQL:
Ver original
  1. SELECT asignaturas.id_asig, alumnos.id_alum FROM asignaturas, usuarios, alumnos, alum_asig WHERE asignaturas.id_asig = alum_asig.id_asig AND alumnos.id_alum = alum_asig.id_alum AND alumnos.id_usuario = usuarios.id_usuario AND usuarios.username='fran' not in (select id_alum, id_asig FROM alum_asig)
  #2 (permalink)  
Antiguo 16/05/2012, 11:21
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Problema con una consulta #1241 - Operand should contain 1 column(s)

Hola ando con poco tiempo je prueba con este codigo.

Código SQL:
Ver original
  1. SELECT * FROM asignaturas, alum_asign
  2. WHERE alum_asig.id_alum = idAlumno AND alum_asig.id_asig NOT IN (SELECT id_asig FROM asignaturas);
Si no te resulta me avisas y lo reviso mejor

Saludos
  #3 (permalink)  
Antiguo 16/05/2012, 12:04
 
Fecha de Ingreso: abril-2012
Ubicación: Cadiz
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con una consulta #1241 - Operand should contain 1 column(s)

Muchas gracas djaevi ahora mismo lo pruebo y te comento, de todas formas e intentado de mas formas que ahora pondre, en nada te cuento ;)
  #4 (permalink)  
Antiguo 16/05/2012, 12:42
 
Fecha de Ingreso: abril-2012
Ubicación: Cadiz
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con una consulta #1241 - Operand should contain 1 column(s)

que va, no me funciona :S, voy a seguir intentando a ver ... he probado con esto pero tampoco

Código MySQL:
Ver original
  1. SELECT asignaturas.id_asig, asignaturas.nombre
  2. FROM asignaturas
  3.                                 FROM asignaturas, usuarios, alumnos, alum_asig
  4.                                 WHERE asignaturas.id_asig = alum_asig.id_asig
  5.  
  6.                                 AND alumnos.id_alum = alum_asig.id_alum
  7.                                 AND alumnos.id_usuario = usuarios.id_usuario
  8.                                 AND usuarios.username='fran'
  9.  
  10.                               )
  #5 (permalink)  
Antiguo 16/05/2012, 14:22
 
Fecha de Ingreso: abril-2012
Ubicación: Cadiz
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con una consulta #1241 - Operand should contain 1 column(s)

Bueno, ya lo pude solucionar, os dejo el código por si a alguien le puede servir como ejemplo en un futuro:

Código MySQL:
Ver original
  1. SELECT asignaturas.nombre
  2. FROM asignaturas
  3. WHERE asignaturas.nombre NOT
  4. IN (
  5.  
  6. SELECT asignaturas.nombre
  7. FROM asignaturas, usuarios, alumnos, alum_asig
  8. WHERE asignaturas.id_asig = alum_asig.id_asig
  9. AND alumnos.id_alum = alum_asig.id_alum
  10. AND alumnos.id_usuario = usuarios.id_usuario
  11. AND usuarios.username = '$username'
  12. )

Explico que es lo que hace. Primero selecciono las asignaturas de la tabla asignaturas (en mi caso he cogido tambien la id por que me hace falta para completar el proyecto que estoy realizando) y en el WHERE con la condición "NOT IN" le digo que no me seleccione las que esta dentro del segundo select, dando como resultado, el nombre de las asignaturas cuyo alumno no tiene o no esta registrado. Si necesitan saber algo más, solo pregunten. Un saludo.

Etiquetas: select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:25.