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

Consulta SELECT

Estas en el tema de Consulta SELECT en el foro de Mysql en Foros del Web. Saludos Comunidad Forosdelweb. Recién llegué a Mysql y ando escaso de conocimientos aver si ustedes me puedieran echar una mano. En mi base de datos ...
  #1 (permalink)  
Antiguo 07/02/2011, 03:35
 
Fecha de Ingreso: febrero-2011
Mensajes: 14
Antigüedad: 13 años, 2 meses
Puntos: 0
Información Consulta SELECT

Saludos Comunidad Forosdelweb.
Recién llegué a Mysql y ando escaso de conocimientos aver si ustedes me puedieran echar una mano.

En mi base de datos tengo la tabla Facturas y la Tabla Cliente . Me gustaría saber que registro he de añadir para poder relacionarlas y consultar todas las facturas de un determinado cliente.

¿Sencillo? ustedes me informan. Gracias de antemano.
  #2 (permalink)  
Antiguo 07/02/2011, 07:10
 
Fecha de Ingreso: febrero-2011
Mensajes: 2
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Consulta SELECT

Es muy sencillo, pero debería de poner los campos de cada tabla, aunque así a bote de pronto diría que un cliente podrá tener varias facturas al igual que una factura podrá tener varios clientes, por lo que deberas crear otra tabla donde deberá haber dos campos, cada uno de ellos sera la llave primaria de las dos tablas de en medio, osease, Clientes y Factura, estos campos serán foreign y primarios al mismo tiempo.
  #3 (permalink)  
Antiguo 07/02/2011, 09:30
 
Fecha de Ingreso: febrero-2011
Mensajes: 14
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Consulta SELECT

Gracias por responder.

A ver, para aclarar mi duda;
en la tabla Cliente tengo estos campos entre otros

Id --> Int(8) --> Autoincrementa (calve primaria)
Nombre --> Varchar(50)
Apellidos --> Varchar(100)
Ciudad --> Varchar(80)


en la tabla Facturas tengo estos campos entre otros

Id --> Int(8) --> Autoincrementa (calve primaria)
Cuantia --> int(50)
Fecha --> Date


Añadir que un cliente puede tener muchas facturas, y que cada factura es propia de un cliente.

[I]¿Cómo puedo consultar todas las facturas de un cliente? /I]
  #4 (permalink)  
Antiguo 07/02/2011, 09:33
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, 5 meses
Puntos: 2658
Respuesta: Consulta SELECT

Cita:
¿Cómo puedo consultar todas las facturas de un cliente?
En tu tabla Facturas debe aparecer como FK la PK del cliente. Sin eso es imposible relacionarlas.
¿Está incluida?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/02/2011, 15:12
 
Fecha de Ingreso: febrero-2011
Mensajes: 14
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Consulta SELECT

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En tu tabla Facturas debe aparecer como FK la PK del cliente. Sin eso es imposible relacionarlas.
¿Está incluida?
Gracias por responder.

He añadido un campo Id_usuario como FK en la tabla Facturas tal vez esté cerca de la solución o tal vez no, pero al realizar la consulta:
SELECT Id FROM `facturas` WHERE Id_usuario=75
no me devuelve nada

¿Qué está ocurriendo? (El usuario 75 existe y tiene facturas)


Pd: Para crear la FK en phpmyadmin para el que no lo sepa, en la inserción de un campo hay un botón de opción con el icono de un relámpago que hay que activar.

Al seleccionar la tabla en la que hemos creado el campo como FK y estando en la vista de Estructura, al final de la tabla aparece un resumen de índices en el que se nos muestra la clave principal o PRIMARY y nuestra clave foranea o INDEX.
  #6 (permalink)  
Antiguo 07/02/2011, 15:32
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, 5 meses
Puntos: 2658
Respuesta: Consulta SELECT

Técnicamente debería funcionar si se da así:

Código MySQL:
Ver original
  1. SELECT F.Id, F.Cuantia, F.Fecha, C.Apellidos, C.Nombre, C.Ciudad
  2. FROM facturas F INNER JOIN cliente C ON F.usuario_id = C.id;
La única forma en que no diera resultados es si y sólo si no hubiese registros en Facturas que coincidieran con el ID de clientes. En ese caso lo que deberías hacer es verificar es que los campos Facturas.id_usuario tengan valores que existan en Cliente.Id.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 07/02/2011, 16:04
 
Fecha de Ingreso: febrero-2011
Mensajes: 14
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Consulta SELECT

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Técnicamente debería funcionar si se da así:

Código MySQL:
Ver original
  1. SELECT F.Id, F.Cuantia, F.Fecha, C.Apellidos, C.Nombre, C.Ciudad
  2. FROM facturas F INNER JOIN cliente C ON F.usuario_id = C.id;
La única forma en que no diera resultados es si y sólo si no hubiese registros en Facturas que coincidieran con el ID de clientes. En ese caso lo que deberías hacer es verificar es que los campos Facturas.id_usuario tengan valores que existan en Cliente.Id.
Solucionado. Anduvo de 10

Muchas gracias.
  #8 (permalink)  
Antiguo 10/02/2011, 03:34
 
Fecha de Ingreso: febrero-2011
Mensajes: 14
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Consulta SELECT

Mis agradecimientos hacia la comunidad y como no, a gnzsoloyo por haberme prestado su tiempo en ayudarme.

El código ofrecido por gnzsoloyo funciona, mi pequeño problema es que no tengo registros en Facturas que coincida con el ID de clientes como me advierten más arriba.

No entiendo muy bien que significa aunque tengo la certeza de que el id de la tabla clientes que inserto en la consulta si tiene facturas, pero no me muestra resultados.

¿Alguien me presta su ayuda para descifrar este enigma? Lo que pretendo es consultar todas las facturas de un determinado cliente. Gracias.
  #9 (permalink)  
Antiguo 10/02/2011, 05:12
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, 5 meses
Puntos: 2658
Respuesta: Consulta SELECT

Cita:
No entiendo muy bien que significa aunque tengo la certeza de que el id de la tabla clientes que inserto en la consulta si tiene facturas, pero no me muestra resultados.
:) :) :)
Bueno, me temo que eso sólo se puede resolver revisando el código de inserción línea por línea, porque evidentemente hay algún momento en que el dato necesario no está llegando donde corresponde. Eso sólo se logra debuggeando...

Además, hay que verificar la definición de la tabla y asegurarse de que ambas sean InnoDB y que la tabla de la factura tenga correctamente puesta la FK que corresponde al ID del cliente, apuntando a la PK de la tabla de clientes, y eventualmente que esa FK no pueda ser NULL. Es importante que sean tablas InnoDB y no MyISAM porque si no la FK no funcionará (y MySQL no te avisa que no la pudo definir).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 11/02/2011, 06:30
 
Fecha de Ingreso: febrero-2011
Mensajes: 14
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Consulta SELECT

Saludos y mis agradecimientos de nuevo Portador de Luz.

Estrujandome la cabeza y buscando por la web, creo que existe 2 soluciones:

- Crear una tabla que contenga todos los campos de la tabla facturas y la tabla clientes.
1er pequeño problema; Solo puede haber una pk auto_increment, o la id_factura o la Id_cliente
De esta forma habría que cambiar todos los selects e inserts de la web


- Modificar el motor de busqueda de myisam a innobd. Digo modificar pero mas bien sería crear de nuevo con este motor (ya que habría que pasa todos los campos al mismo tamaño).
Según he leído innodb es más difícil y más lento.


- Solución extra; Una solucion que se me ha ocurrido ahora mismo es hacer la consulta con una tabla intermedia.. estoy leyendo aceca de esto... pero me estoy preguntando si no tendría el mismo problema , pues las FK no se vincularían ¿o si?

¿que me recomendarías maestro?


PD: Maestro, resulta que tengo 2 tablas a las que accedo a sus campos mediante una función en Xajax, esto es Marca y Modelo, cuando seleccionas una marca en la web, se cargan los modelos correspondientes en otro select box.

PD2: Otra solución posible seria crear la bd en oracle, ya que creo que no tendrá estos problemas.
  #11 (permalink)  
Antiguo 21/02/2011, 08:05
 
Fecha de Ingreso: febrero-2011
Mensajes: 14
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Consulta SELECT

SELECT *
FROM facturas
WHERE id_usuario=99


Por dios si ha costado, y no era tan d¡fícil.

Etiquetas: select
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 13:07.