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

consulta de 2 tablas segun el usuario

Estas en el tema de consulta de 2 tablas segun el usuario en el foro de Bases de Datos General en Foros del Web. Hola a todos, tengo un problema que de momento nadie puede solucionar. Explico a ver si alguien de vosotros me da la solucion. Quiero sacar ...
  #1 (permalink)  
Antiguo 03/08/2009, 03:22
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
consulta de 2 tablas segun el usuario

Hola a todos, tengo un problema que de momento nadie puede solucionar.
Explico a ver si alguien de vosotros me da la solucion.
Quiero sacar una consulta de todos los datos de la tabla "productos" que coincidan con el campo "categoria" y que correspondan al usuario logueado de la tabla "compradores".
La tabla productos tiene un campo llamado "categoria" donde guarda el id de la categoria, este campo es del tipo (INT). En la tabla compradores hay un campo donde guarda el id de la categoria, este campo es del tipo (SET)
Primer problema.
En la tabla productos se guarda por cada linea un id de la categoria (por ejemplo un 6), en la tabla compradores se guardan varios id's (por ejemplo 3,5,6,8,10,13)
He echo una consulta
Código PHP:
#
SELECT C.usuarioC.categoriaP.categoria
    FROM compradores C LEFT JOIN productos P ON C
.categoria P.categoria
    WHERE C
.usuario val
Pero solo me saca una linea con el usuario y me gustaria sacar todas las filas donde coincidieran los campos categoria de las 2 tablas y que sean del usuario logueado.
Un saludo
  #2 (permalink)  
Antiguo 03/08/2009, 05:49
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: consulta de 2 tablas segun el usuario

Creo que te falto un LEFT JOIN mas para recoger bien los datos de las 3 tablas, ahi imagine que la tabla categorias tiene un campo id como identificador clave. Prueba y a ver si te funciona o te da una idea de lo que fallaba.

Código:
SELECT C.usuario, C.categoria, P.categoria
    FROM compradores C LEFT JOIN productos P ON C.categoria = P.categoria
LEFT JOIN categorias CAT ON P.categoria=CAT.id
    WHERE C.usuario = val;
  #3 (permalink)  
Antiguo 04/08/2009, 01:48
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: consulta de 2 tablas segun el usuario

Cita:
Iniciado por Vun Ver Mensaje
Creo que te falto un LEFT JOIN mas para recoger bien los datos de las 3 tablas, ahi imagine que la tabla categorias tiene un campo id como identificador clave. Prueba y a ver si te funciona o te da una idea de lo que fallaba.

Código:
SELECT C.usuario, C.categoria, P.categoria
    FROM compradores C LEFT JOIN productos P ON C.categoria = P.categoria
LEFT JOIN categorias CAT ON P.categoria=CAT.id
    WHERE C.usuario = val;
Pues nada, me sale solo una linea con el usuario. Aunque la tabla "categoria" no deberia de hacer falta, ya que solo quiero hacer una consulta de los campos que coincidan de las tablas Productos y Usuario y que cada una tiene un campo llamado "categoria"
No se te ocurre alguna otra idea?
Un saludo y gracias
  #4 (permalink)  
Antiguo 04/08/2009, 04:45
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: consulta de 2 tablas segun el usuario

Pero aunque muestres campos de 2 tablas tienes que enlazarlas todas las que intervengan. Ayudaria si nos pones algunos registros de las 3 tablas con sus campos clave y eso, asi podria crear la base de datos yo y probar en directo
  #5 (permalink)  
Antiguo 04/08/2009, 10:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: consulta de 2 tablas segun el usuario

Tema trasladado desde PHP
  #6 (permalink)  
Antiguo 04/08/2009, 18:19
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: consulta de 2 tablas segun el usuario

Cita:
Iniciado por GatorV Ver Mensaje
Tema trasladado desde PHP
te pego la exportacion de las tablas, a ver si asi puedes ver donde esta el fallo.
Un saludo y gracias por tu interes

-- 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', '');
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:29.