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

consulta no funciona

Estas en el tema de consulta no funciona en el foro de Mysql en Foros del Web. Intento recuperar los registros de una tabla donde un campo no se repite en otra tabla hasta qui me funciona pero no se como añadirle ...
  #1 (permalink)  
Antiguo 29/11/2013, 12:35
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
consulta no funciona

Intento recuperar los registros de una tabla donde un campo no se repite en otra tabla hasta qui me funciona pero no se como añadirle que sean de un año y mes en concreto hice algo asin:

Código MySQL:
Ver original
  1.          p.*
  2.  FROM
  3.         productos p
  4.        antiguos s
  5.       p.id_producto = s.id_antiguos
  6.      p.antiguos_id IS NULL
  7.  AND YEAR (fecha)='2013'

no funciona.
  #2 (permalink)  
Antiguo 29/11/2013, 12:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: consulta no funciona

Código MySQL:
Ver original
  1. SELECT p.*
  2. FROM productos p LEFT JOIN antiguos s ON p.id_producto = s.id_antiguos
  3. WHERE s.id_antiguos IS NULL AND YEAR (fecha)=2013
Tienes un doble AND, y además los NULL sólo deben aparecer en la segunda tabla, no en la primera.
Adicionalmente, los años son números y no cadenas de texto, y forzosamente el campo "fecha" debe ser DATE o DATETIME. No puede ser de otro tipo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/11/2013, 12:48
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: consulta no funciona

Hola gnzsoloyo y gracias por tu ayuda, bueno me da este error:

Column 'fecha' in where clause is ambiguous. A que puede ser debido.
  #4 (permalink)  
Antiguo 29/11/2013, 12:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: consulta no funciona

a que tienes el nombre en dos tablas o a que ya has asignado el alias p y deberias usarlo, si es que corresponde
Código MySQL:
Ver original
  1. SELECT p.*
  2.     FROM productos p LEFT JOIN antiguos s ON p.id_producto = s.id_antiguos
  3.     WHERE s.id_antiguos IS NULL AND YEAR (p.fecha)=2013
  #5 (permalink)  
Antiguo 29/11/2013, 12:54
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: consulta no funciona

vale era porque estaba comprobando la fecha de la segunda tabla y era la primera lo solucione asin:

Código MySQL:
Ver original
  1. SELECT p.*
  2.     FROM productos p LEFT JOIN antiguos s ON p.id_producto = s.id_antiguos
  3.     WHERE s.id_antiguos IS NULL AND YEAR (p.fecha)=2013

pero ahora no se utilizarlo con el COUNT?
  #6 (permalink)  
Antiguo 29/11/2013, 12:56
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: consulta no funciona

jurena te anticipastes gracias pero sigo teniendo la duda con el COUNT
  #7 (permalink)  
Antiguo 29/11/2013, 13:17
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: consulta no funciona

Es posible usar COUNT con una consulta como la anterior junto a JOIN o para usar una consulta asin deben de ser tablas relacionadas?
espero que me quiteis esta duda, saludos.
  #8 (permalink)  
Antiguo 29/11/2013, 13:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: consulta no funciona

Cita:
Iniciado por azaz Ver Mensaje
Es posible usar COUNT con una consulta como la anterior junto a JOIN o para usar una consulta asin deben de ser tablas relacionadas?
espero que me quiteis esta duda, saludos.
La idea no es muy clara.
Muestra un ejemplo de consulta según lo que supones que podría ser, y te guiaremos para hacerlo bien.

Técnicamente, un COUNT() es una clausula agrupada, por lo que deberías usar GROUP BY para obtener el resultado.
En ese sentido podría ser:
Código MySQL:
Ver original
  1. SELECT p.*, COUNT(*) Total
  2.     FROM productos p LEFT JOIN antiguos s ON p.id_producto = s.id_antiguos
  3.     WHERE s.id_antiguos IS NULL AND YEAR (p.fecha)=2013
pero no es seguro que el resultado sea coherente.
Explcanos qué es lo que quieres contar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 30/11/2013, 05:48
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: consulta no funciona

Hola gnzsoloyo la idea de la consulta es sobre dos tablas productos y antiguos lo que pretendo con la sql es contar los usuarios web que entran en la tabla productos pero que no entran en antiguos, osea los usuarios que ven los productos pero no ven los antiguos, la manera correcta como seria entonces?
Saludos.
  #10 (permalink)  
Antiguo 30/11/2013, 06:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: consulta no funciona

Cita:
contar los usuarios web que entran en la tabla productos pero que no entran en antiguos, osea los usuarios que ven los productos pero no ven los antiguos
Posible, es posible, pero entre los campos mencionados en tu consulta no hay ninguno que nos indique cómo se registra que un usuario "vio" un producto actual o un producto antiguo.
¿Cómo ves esa relación Usuario -> Producto? ¿Cómo la estableces?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 30/11/2013, 06:35
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: consulta no funciona

el campo producto tiene el id_producto que es el que se relaciona con id_antiguo en la tabla antiguo este es son el pk y fk, y para ver un producto antiguo antes debes de ver los productos actuales, con esto ya es posible hacer esta sql?
saludos.

Última edición por azaz; 30/11/2013 a las 07:11
  #12 (permalink)  
Antiguo 30/11/2013, 08:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: consulta no funciona

Eso que describes relaciona los productos anteriores con los actuales, pero lo que nos estás diciendo es que quieres saber qué productos actuales ven los visitantes que no hayan visto en los antigos.
¿A qué tee estás refiriendo con "ver"? ¿A que llevas un registro de los que los visitantes estuvieron viendo, a que sólo se ven en la lista productos actuales, que no se hayan dado de baja?
Si es lo que los usuarios "vieron" en el sentido de ser "visitados" por ellos, debería existir una tabla de visitas que registre cuáles fueron mostrados al usuario.
Si la idea es sólo mostrar aquellos que no aparecen en la tabla de antiguos, es algo completamente distinto.

¿Entiendes la idea?
No pienses en la descripción desde tu punto de vista. Para ti la cosa es clara porque tú lo diseñaste.
Piensa en describir la cosa para alguien (como nosotros) que no tiene ni idea de cómo funciona el sistema que diseñaste, porque jamás lo ha visto funcionando.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 30/11/2013, 16:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: consulta no funciona

hola gnzsoloyo, intento explicarme tengo las dos tablas nombradas anteriormene lo que quiero saber el numero de usuarios q entran a ver los productos donde id_producto contiene el identificador del usuario pero que estos usuarios no entran en otra pagina para ver los productos antuguos donde id_antiguo de la tabla antiguo seria el identificador del usuario.
mas que nada para saber si visitan o cuantos visitan la pagina de productos antiguos.
en este caso los productos no me importan solo los usuarios que entran a ver productos pero que no cambian de pagina para ver mas productos osea los antiguos.
perdonar si os lie un poco espero que ahora se entienda.
saludos
  #14 (permalink)  
Antiguo 30/11/2013, 17:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: consulta no funciona

OK. Entonces el tema es qué productos visitan y de cuál tipo.
¿Como registras que un usuario visitó un producto o la página en cuestión?
Para eso debería existir una tabla que almacene al menos el username, la fecha y el producto visitado.
Por otro lado, hay un diseño defectuoso en el manejo de productos, ya que un producto puede ser "antiguo" o "nuevo", pero se debería registrar en una única tabla base de la que deberían depender las otras dos. Es decir un esquema madre-hijos, de ese modo podrías relacionar sin errores ni solapamientos los prouctos y los usuarios.
Ahora bien, si no estás registrando las visitas en un esquema de ese tipo... pues no hay modo de obtener una consulta para saber cuál producto visitaron los usuarios.

¿Cómo haces esa registración?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 30/11/2013, 18:26
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: consulta no funciona

hola gnzsoloyo, el usuario visita la pagina en cuestion sin importar que productos visita esto me da igual.
la sql que quiero hacer consiste en eso en contar todo los usuarios o mejor dicho visitas que tiene la pagina de productos pero que no visitan los antiguos.
la consulta en si es la que posteaste antes pero como quiero obtener solobel numero de filas quiero usar el count.
saludos.
  #16 (permalink)  
Antiguo 30/11/2013, 19:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: consulta no funciona

Cita:
la sql que quiero hacer consiste en eso en contar todo los usuarios o mejor dicho visitas que tiene la pagina de productos pero que no visitan los antiguos.
Para lograr esa cuenta debe existir un registro de visitas, es decir que al momento de ingresar a la pagina de productos, debes estar registrando en la base que se ha hecho una visita, y eventualmente quién la visita.
Hasta ahora no me has respondido si eso lo estás o no lo estás registrando.

La consulta mencionada:
Código MySQL:
Ver original
  1. SELECT p.*, COUNT(*) Total
  2. FROM productos p LEFT JOIN antiguos s ON p.id_producto = s.id_antiguos
  3.         s.id_antiguos IS NULL
  4.     AND YEAR (p.fecha)=2013
Lo único que hace es contar los productos que están en la tabla "Productos" y que no existan en la tabla "Antiguos", para los productos ingresados este año.
Pero esa tabla no sirve ni sirvió en momento para contar cuantas visitas hubo a una u otra. Esa información no surge de la estructura de datos de estas tablas.
Para que quede claro: Para saber que cantidad de visitas tuvo una u otra lista, debes registrar esas visitas en alguna tabla, y eso no pareces estarlo haciendo.

¿Se entiende la idea?

Un detalle: En base a lo que has explicado hasta ahora, la tabla "Antiguos" lo que contiene son productos que ya no están en existencia, o que existían antes. No queda muy claro el sentido de esa tabla, pero eso es lo que mas o menos se infiere.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #17 (permalink)  
Antiguo 01/12/2013, 05:37
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: consulta no funciona

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Para lograr esa cuenta debe existir un registro de visitas, es decir que al momento de ingresar a la pagina de productos, debes estar registrando en la base que se ha hecho una visita, y eventualmente quién la visita.
Hasta ahora no me has respondido si eso lo estás o no lo estás registrando.
Perdona pero quizas te estube liando y no te di los datos suficientes, en realidad la tabla producto lo que registro ahi es esto que me preguntas, osea un id autoincrement que esto seria para contar las visitas en la tabla productos, despues cada visita le asigno un numero unico en el campo productos_id, despues la fecha de vista y la relacion con la tabla anitiguo seria con el campo antiguos_id que es el que contiene el identificador unico de la de productos.

Espero haberme explicado bien ahora .

gracias nuevamente y saludos.

Etiquetas: campo, join, null, registro, 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 17:58.