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

consulta de 2 tablas

Estas en el tema de consulta de 2 tablas en el foro de Bases de Datos General en Foros del Web. Hola a todos, necesito hacer una consulta que no hay forma de que me salga. Tengo 2 tablas compradores, productos. En la tabla compradores hay ...
  #1 (permalink)  
Antiguo 27/07/2009, 14:26
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
consulta de 2 tablas

Hola a todos, necesito hacer una consulta que no hay forma de que me salga.
Tengo 2 tablas
compradores, productos.
En la tabla compradores hay 2 campos por los que quiero filtrar, USUARIO y CATEGORIA ( SET ) y en la tabla productos se guarda otra vez id_categoria
Quiero hacer una consulta que me imprima en pantalla todos los productos que hay en la tabla Productos que coincidan con el campo categoria de la tabla compradores del USUARIO que a iniciado la sesion.
Alguien que me pueda ayudar?.
Un saludo
  #2 (permalink)  
Antiguo 27/07/2009, 14:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: consulta de 2 tablas

Tema trasladado desde PHP
  #3 (permalink)  
Antiguo 27/07/2009, 15:33
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: consulta de 2 tablas

Utiliza inner join.
En el foro y en toda la web hay infinidad de ejemplos.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 28/07/2009, 04:09
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: consulta de 2 tablas

No me sale nada, he colocado este codigo
SELECT compradores.usuario, compradores.categoria, producto.categoria
FROM compradores, productos INNER JOIN compradores, productos ON compradores.categoria = productos.categoria
WHERE compradores.usuario = colname
pero me da este error MySql Error#:1066 Not unique table/alias:'compradores'
Alguien me echa una mano?
Un saludo
  #5 (permalink)  
Antiguo 28/07/2009, 07:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta de 2 tablas

Código sql:
Ver original
  1. SELECT C.usuario, C.categoria, P.categoria
  2. FROM compradores C INNER JOIN productos P ON C.categoria = P.categoria
  3. WHERE C.usuario = colname
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 28/07/2009, 11:45
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años
Puntos: 69
Respuesta: consulta de 2 tablas

Cita:
Iniciado por visona Ver Mensaje
No me sale nada, he colocado este codigo
SELECT compradores.usuario, compradores.categoria, producto.categoria
FROM compradores, productos INNER JOIN compradores, productos ON compradores.categoria = productos.categoria
WHERE compradores.usuario = colname
pero me da este error MySql Error#:1066 Not unique table/alias:'compradores'
Alguien me echa una mano?
Un saludo
Ahi parece que tienes mas d euna tabla ocn el nombre "compradores" checalo
  #7 (permalink)  
Antiguo 29/07/2009, 05:01
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: consulta de 2 tablas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código sql:
Ver original
  1. SELECT C.usuario, C.categoria, P.categoria
  2. FROM compradores C INNER JOIN productos P ON C.categoria = P.categoria
  3. WHERE C.usuario = colname
ahora no me da el error pero sigue sin salime nada

Código PHP:
SELECT compradores.usuariocompradores.categoriaproductos.categoriaproductos.nombreproductos.pvdproductos.imagenproductos.fecha_fin
FROM compradores  INNER JOIN productos  ON compradores
.categoria productos.categoria
WHERE compradores
.usuario colname 
Este es el codigo que tengo puesto
  #8 (permalink)  
Antiguo 29/07/2009, 05:22
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: consulta de 2 tablas

Entonces es que no tienes registros para esa condición.

Haz la prueba con registros que tengas la certeza que existen.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 29/07/2009, 10:00
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: consulta de 2 tablas

Cita:
Iniciado por huesos52 Ver Mensaje
Entonces es que no tienes registros para esa condición.

Haz la prueba con registros que tengas la certeza que existen.

saludos
Si existen esos registros, he comprobado que en las 2 tablas existan
  #10 (permalink)  
Antiguo 29/07/2009, 10:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: consulta de 2 tablas

que es colname?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 29/07/2009, 10:11
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: consulta de 2 tablas

A ver si le quito esta linea WHERE compradores.usuario = colname me salen los productos que tienen un 0 pero si pongo esa linea no me sale nada. Para comprobar he colocado un 6 en categoria de la tabla compradores y en la tabla productos en el campo categoria he puesto otro 6 y cuando coloco esa linea no me saca nada.
A ver si con esto ayudo a resolver esto. la variable colname esta bien por que la imprimo en pantalla y me saca el usuario que esta activo
  #12 (permalink)  
Antiguo 29/07/2009, 10:27
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: consulta de 2 tablas

visona... este foro es para sporte de consultas SQL y bases de datos en general. Cada que ponen variables y codigo de otros lenguajes se dificulta la interpretación de la consulta que en ultimas es l oque buscas.

Prueba la consulta directamente en mysql así:

SELECT C.usuario, C.categoria, P.categoria
FROM compradores C INNER JOIN productos P ON C.categoria = P.categoria
WHERE C.usuario = 'Juan'

Donde juan es un nombre existente. Si el campo es numerico, quitale las comillas sencillas.

Si no te arroja resultados, definitivamente es por que no tienes datos relacionados o los estas relacionando mal con las llaves foraneas.

Revisalo y nos cuentas.
si esto te corre, tienes un problema con la variable. Si no te corre, definitivamente
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #13 (permalink)  
Antiguo 29/07/2009, 11:18
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: consulta de 2 tablas

Cita:
Iniciado por huesos52 Ver Mensaje
visona... este foro es para sporte de consultas SQL y bases de datos en general. Cada que ponen variables y codigo de otros lenguajes se dificulta la interpretación de la consulta que en ultimas es l oque buscas.

Prueba la consulta directamente en mysql así:

SELECT C.usuario, C.categoria, P.categoria
FROM compradores C INNER JOIN productos P ON C.categoria = P.categoria
WHERE C.usuario = 'Juan'

Donde juan es un nombre existente. Si el campo es numerico, quitale las comillas sencillas.

Si no te arroja resultados, definitivamente es por que no tienes datos relacionados o los estas relacionando mal con las llaves foraneas.

Revisalo y nos cuentas.
si esto te corre, tienes un problema con la variable. Si no te corre, definitivamente
Pues sigue sin salirme nada.
Recopilamos....
Yo tengo la tabla compradores donde esta el campo que tiene el nombre del usuario y un campo con la "categoria". Tengo otra tabla productos que tiene un campo que se llama "categoria". En las dos tablas en el campo categoria hay un "6" (estas 2 tablas no estan relacionadas) y te puedo asegurar que si hay datos, por que los he puesto yo y los he visto.

Un saludo
  #14 (permalink)  
Antiguo 29/07/2009, 12:14
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: consulta de 2 tablas

Que tal si nos compartes los create table de las tablas relacionadas con algunos (insert into) registros y nos especificas la salida que esperas.

La consulta parece muy basica para que te de problemas.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #15 (permalink)  
Antiguo 29/07/2009, 12:36
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: consulta de 2 tablas

Cita:
Iniciado por huesos52 Ver Mensaje
Que tal si nos compartes los create table de las tablas relacionadas con algunos (insert into) registros y nos especificas la salida que esperas.

La consulta parece muy basica para que te de problemas.

Un saludo
-- phpMyAdmin SQL Dump
-- version 2.8.2.4
-- http://www.phpmyadmin.net
--
-- Servidor: localhost:3306
-- Tiempo de generación: 29-07-2009 a las 20:33:28
-- Versión del servidor: 4.1.20
-- Versión de PHP: 5.2.6
--
-- Base de datos: `admin_locompramos`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `productos`
--

CREATE TABLE `productos` (
`id_producto` int(5) NOT NULL auto_increment,
`nombre` varchar(150) collate utf8_spanish2_ci NOT NULL default '',
`cantidad` int(10) NOT NULL default '0',
`destacado` varchar(5) collate utf8_spanish2_ci NOT NULL default 'NO',
`categoria` int(5) NOT NULL default '0',
`descripcion` text collate utf8_spanish2_ci NOT NULL,
`pvp` int(8) NOT NULL default '0',
`pvd` varchar(8) collate utf8_spanish2_ci NOT NULL default '',
`imagen` varchar(100) collate utf8_spanish2_ci default 'noimage.jpg',
`usuario` varchar(100) collate utf8_spanish2_ci NOT NULL default '',
`pdf` varchar(100) collate utf8_spanish2_ci default NULL,
`fecha` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`fecha_fin` date NOT NULL default '0000-00-00',
`interesantes` varchar(20) collate utf8_spanish2_ci NOT NULL default '',
`val_vendedor` varchar(20) collate utf8_spanish2_ci NOT NULL default '',
PRIMARY KEY (`id_producto`),
KEY `categoria` (`categoria`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci AUTO_INCREMENT=27 ;

-- phpMyAdmin SQL Dump
-- version 2.8.2.4
-- http://www.phpmyadmin.net
--
-- Servidor: localhost:3306
-- Tiempo de generación: 29-07-2009 a las 20:34:29
-- Versión del servidor: 4.1.20
-- Versión de PHP: 5.2.6
--
-- Base de datos: `admin_locompramos`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `compradores`
--

CREATE TABLE `compradores` (
`id_usuario` int(11) NOT NULL auto_increment,
`usuario` varchar(100) collate utf8_spanish2_ci NOT NULL default '',
`pass` varchar(40) collate utf8_spanish2_ci NOT NULL default '',
`nombre` varchar(25) collate utf8_spanish2_ci NOT NULL default '',
`apellidos` varchar(25) collate utf8_spanish2_ci NOT NULL default '',
`dia_nacimiento` int(2) NOT NULL default '0',
`pais_nacimiento` varchar(50) collate utf8_spanish2_ci NOT NULL default '',
`localidad` varchar(100) collate utf8_spanish2_ci NOT NULL default '',
`ciudad_residente` varchar(50) collate utf8_spanish2_ci NOT NULL default '',
`localidad_residente` varchar(50) collate utf8_spanish2_ci NOT NULL default '',
`cp_residente` int(5) NOT NULL default '0',
`fecha_alta` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`fecha_baja` varchar(25) collate utf8_spanish2_ci NOT NULL default '',
`supervisado_usuario` varchar(2) collate utf8_spanish2_ci NOT NULL default '',
`dimicilio` varchar(50) collate utf8_spanish2_ci NOT NULL default '',
`mes_nacimiento` varchar(15) collate utf8_spanish2_ci NOT NULL default '',
`year_nacimiento` int(4) NOT NULL default '0',
`telefono_usuario` int(9) NOT NULL default '0',
`categoria` set('1','2','3','4','5','6','7','8','9','10','11', '12','13','14','15','16','17','18') character set latin1 collate latin1_spanish_ci NOT NULL default '',
`nif` varchar(50) collate utf8_spanish2_ci NOT NULL default '',
PRIMARY KEY (`id_usuario`),
KEY `categoria` (`categoria`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci AUTO_INCREMENT=11 ;

--
-- Volcar la base de datos para la tabla `compradores`
--

INSERT INTO `compradores` (`id_usuario`, `usuario`, `pass`, `nombre`, `apellidos`, `dia_nacimiento`, `pais_nacimiento`, `localidad`, `ciudad_residente`, `localidad_residente`, `cp_residente`, `fecha_alta`, `fecha_baja`, `supervisado_usuario`, `dimicilio`, `mes_nacimiento`, `year_nacimiento`, `telefono_usuario`, `categoria`, `nif`) VALUES (7, '[email protected]', 'bbea3b8275c9fc42f39e4a3c3be86dbc276d680a', '', '', 0, '', '', '', '', 0, '2009-07-02 01:14:24', '', '', '', '', 0, 0, '', ''),
(8, '[email protected]', 'aafdc23870ecbcd3d557b6423a8982134e17927e', '', '', 0, '', '', '', '', 0, '2009-07-06 14:46:21', '', '', '', '', 0, 0, '', ''),
(10, '[email protected]', 'a42eea379095d23f5652627396e03b47b92f5715', '', '', 0, '', '', '', '', 0, '2009-07-29 12:58:14', '', '', '', '', 0, 0, '4', '');

A ver si asi se aclara algo. Muchas gracias por vuestra ayuda
  #16 (permalink)  
Antiguo 29/07/2009, 12:42
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: consulta de 2 tablas

Y no hay insert para la tabla productos?

Estas uniendo dos tablas que compartan información y si no hay información en la tabla productos, por consiguiente no se mostraran resultados.

Prueba con left join que muestra lo que tienen en común, mas lo que tiene la tabla declarada a la izquierda (En este caso compradores.) De lo contrario, debe existir registros en la tabla productos para que se de bien la relación.

Código sql:
Ver original
  1. mysql> SELECT C.usuario, C.categoria, P.categoria
  2.     -> FROM compradores C INNER JOIN productos P ON C.categoria = P.categoria
  3.     -> WHERE C.usuario = '[email protected]';
  4. Empty SET (0.02 sec)
  5.  
  6. mysql> SELECT C.usuario, C.categoria, P.categoria
  7.     -> FROM compradores C LEFT JOIN productos P ON C.categoria = P.categoria
  8.     -> WHERE C.usuario = '[email protected]';
  9. +---------------------+-----------+-----------+
  10. | usuario             | categoria | categoria |
  11. +---------------------+-----------+-----------+
  12. | macros365@yahoo.com |           |      NULL |
  13. +---------------------+-----------+-----------+
  14. 1 ROW IN SET (0.00 sec)
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #17 (permalink)  
Antiguo 01/08/2009, 21:27
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: consulta de 2 tablas

Cita:
Iniciado por huesos52 Ver Mensaje
Y no hay insert para la tabla productos?

Estas uniendo dos tablas que compartan información y si no hay información en la tabla productos, por consiguiente no se mostraran resultados.

Prueba con left join que muestra lo que tienen en común, mas lo que tiene la tabla declarada a la izquierda (En este caso compradores.) De lo contrario, debe existir registros en la tabla productos para que se de bien la relación.

Código sql:
Ver original
  1. mysql> SELECT C.usuario, C.categoria, P.categoria
  2.     -> FROM compradores C INNER JOIN productos P ON C.categoria = P.categoria
  3.     -> WHERE C.usuario = '[email protected]';
  4. Empty SET (0.02 sec)
  5.  
  6. mysql> SELECT C.usuario, C.categoria, P.categoria
  7.     -> FROM compradores C LEFT JOIN productos P ON C.categoria = P.categoria
  8.     -> WHERE C.usuario = '[email protected]';
  9. +---------------------+-----------+-----------+
  10. | usuario             | categoria | categoria |
  11. +---------------------+-----------+-----------+
  12. | macros365@yahoo.com |           |      NULL |
  13. +---------------------+-----------+-----------+
  14. 1 ROW IN SET (0.00 sec)
Pues siguen sin salirme los datos. Me sale el usuario, cosa que antes no me salia, pero los datos de la tabla productos que coinciden con los que tiene la tabla compradores no me salen. Parece facil la consulta, pero no hay forma de que salga. Dime que puedo hacer para que lo veas tu mas claro.
Un saludo y gracias por el interes mostrado
  #18 (permalink)  
Antiguo 02/08/2009, 10:12
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: consulta de 2 tablas

Busca donde esta el problema, pero con toda seguridad no está en la consulta.

Revisa bien las dos tablas, la información contenida.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #19 (permalink)  
Antiguo 02/08/2009, 11:41
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: consulta de 2 tablas

Cita:
Iniciado por huesos52 Ver Mensaje
Busca donde esta el problema, pero con toda seguridad no está en la consulta.

Revisa bien las dos tablas, la información contenida.

Saludos
Por mucho que miro no le veo ningun problema, las 2 tablas tienen en el campo categoria un "6" la unica diferencia es que en la tabla compradores el campo es "SET" y en la tabla productos en INT(5)
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 15:37.