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

Consulta de codigo

Estas en el tema de Consulta de codigo en el foro de Mysql en Foros del Web. Buenos dias tengo un problema que no se como resolver tengo un mismo código asociado a varios equipos, me explico dentro de una maleta vienen ...
  #1 (permalink)  
Antiguo 27/06/2014, 07:20
 
Fecha de Ingreso: abril-2014
Mensajes: 35
Antigüedad: 10 años
Puntos: 0
Consulta de codigo

Buenos dias tengo un problema que no se como resolver tengo un mismo código asociado a varios equipos, me explico dentro de una maleta vienen varios equipos como laptop,modem, teclados, etc. Necesito que al hacer la consulta de el código de la maleta me muestre la cantidad y la descripción de cada una de las cosas que esta contenida dentro de la maleta.

Esta es mi consulta
Código MySQL:
Ver original
  1. SELECT d.Maleta, d.CVA, m.Municipio, d.Parroquia, d.Des_codigo
  2. FROM despacho d  JOIN municipio m ON d.Municipio = m.Cod_Municipio
  3. WHERE Maleta = '$Maleta'

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos. Leer las normas del foro, por favor.
  #2 (permalink)  
Antiguo 27/06/2014, 07:27
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 de codigo

Tiene todo el aspecto de un error de diseño...
Si tienes una entidad llamada maleta (no tengo ni idea de qué es una "maleta" en tu sistema"), y cada maleta tiene N elementos dentro, deberían existir dos tablas: Maleta y Detalle_Maleta, esto como mínimo.
Digo como minimo, porque un sistema como el que describes requiere bastantes tablas más para hacer algo eficiente, ya que hay que saber si los compoenntes de la maleta pueden ser intecambiados (movidos de una a otra), o si corresponden a un stock determinado.
Todos esos elementos afectarán la consulta que quieres, sin contar con lo que afecten a la consiustencia de tu sistema.

¿Podrías describirnos qué es una "maleta", y cómo entran los componentes a ella?

Si los pones todos en la misma tabla podrían tener inconsistencias, y la consulta se complica bastante.
__________________
¿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 27/06/2014, 08:07
 
Fecha de Ingreso: abril-2014
Mensajes: 35
Antigüedad: 10 años
Puntos: 0
Respuesta: Consulta de codigo

Tengo una tabla llamada despacho en ella se almacena el código de la maleta,el código del equipo, la descripcion del equipo y la dirección donde se envía.
Me refiero a un baúl donde dentro de ella van x cantidad de equipos. Al hacer la consulta de la tabla despacho como la que mostre en la pregunta anterior aparte de mostrarme la informacion que ya me da con la consulta quiero que me de la descripcion de los equipos que van dentro de los baúles o maletas. Y la cantidad de cada uno de esos equipos. Se entiende o no?
  #4 (permalink)  
Antiguo 27/06/2014, 08:16
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 de codigo

Se entiende perfectamente. La duda es: ¿en donde guardas el DETALLE de los equipos que están dentro de esa "maleta"?
Estás hablando de una descripción de equipos, pero no vemos dónde la almacenas, ni cómo se relaciona con la maleta en cuestión. No podemos diseñar una consulta que cumpla lo que quieres sin entender cómo lo almacenas.
Las tablas las estás viendo tu, no nosotros.

Postea, por favor, la estructura (CREATE TABLE) de las tablas que usas en esa consulta.

Si no sabes como obtener el CREATE TABLE, es simple: Usas SHOW CREATE TABLE y con eso MySQL devolvera lo que necesitamos, por ejemplo:

Código MySQL:
Ver original
  1. SHOW CREATE TABLE despacho;
y así con cada una de las tablas.
__________________
¿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 27/06/2014, 08:54
 
Fecha de Ingreso: abril-2014
Mensajes: 35
Antigüedad: 10 años
Puntos: 0
Respuesta: Consulta de codigo

Código MySQL:
Ver original
  1. SHOW CREATE TABLE despacho
  2. Maleta varchar(20)
  3. Desde_Código mediumtext
  4. Código varchar(50)
  5. Centro varchar (11)
  6. Municipio varchar (50)
  #6 (permalink)  
Antiguo 27/06/2014, 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, 5 meses
Puntos: 2658
Respuesta: Consulta de codigo

OK, ahora bien, ¿dónde aparecen en tu modelo de datos los componentes contenidos en el despacho?
No se ve ninguno dato que parezca estar relacionado con teclados, mouses o lo que fuese.
¿Cómo haces para saber qué hay dentro de esa maleta?

Ten en cuenta que sin poder identificar esos componentes, no podemos ni contarlos ni sumarlos...

Por otro lado te remarco lo que te dije:
Cita:
y así con cada una de las tablas.
Es decir, usa esa misma sentencia con todas las tablas involucradas en el caso. No hagas un simple copy+Paste...
__________________
¿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 27/06/2014, 09:05
 
Fecha de Ingreso: abril-2014
Mensajes: 35
Antigüedad: 10 años
Puntos: 0
Respuesta: Consulta de codigo

En Desde_Código se guarda si es teclado,mouse, laptop etc. Lo que veo es que deberia de agregarle un campo donde se almacene la cantidad de los equipos para así poder contarlos no? Yo agrego varios objetos con un mismo código en maleta pero la descripción de los códigos será distinta, quiero que al consultar el código maleta me muestre cada uno de los Desde_Código agregados para el mismo código maleta i
  #8 (permalink)  
Antiguo 27/06/2014, 09:26
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 de codigo

Cita:
En Desde_Código se guarda si es teclado,mouse, laptop etc. Lo que veo es que deberia de agregarle un campo donde se almacene la cantidad de los equipos para así poder contarlos no? Yo agrego varios objetos con un mismo código en maleta pero la descripción de los códigos será distinta, quiero que al consultar el código maleta me muestre cada uno de los Desde_Código agregados para el mismo código maleta i
No, desde el punto de vista de base de datos eso es un error de los severos. Es precisamente a ESO a lo que me referia con un error de diseño.
Estás planteandote la base de datos con lógica de programación, y no es lo mismo. Si lo haces de ese modo terminarás generando información redundante e inconsistente.
Lo que necesitas es un conjunto de tablas que administren las relaciones de una forma eficiente y consistente.
Lo que tienes es:
- Despachos de 1 o N maletas, a 1 o N municipios.
- Maletas, que se despachan conteniendo 1 o N componentes.
- Uno o N componentes de cada maleta.
- N cantidad de componentes en existencias.
- Cada componente perteneciente a una X categoría.
En ese caso hay tablas como:
- Municipio
- Despacho.
- Despacho_maletas.
- Maleta.
- Detalle_Maleta
- Componente.
- Categoria.
Esto por lo menos.
Voy a ahacer una suposición de que un Despacho es algo diferente a una maleta, y que un mismo despacho puede relacionarse con N maletas. No se si se da, pero lo planteo así
Detalle_Maleta es la tabla que administra la relación de qué hay y que cantidad. Tiene una relación de cardinalidad 1:N con maleta, y de 1:1 con Componente.
Componente a su vez tiene una relación N:1 con categoría, por que en Componente almacenarías uno a uno los objetos individuales, mientras que en categoría especificarías qué tipo de objeto es (laptop, mouse, teclado, etc.)

Con un esquema así, calcular cuántos componentes y de qué tipo tiene cada maleta es sencillo.
Supongamos que quieres ver cuántos componentes hay en cada maleta.

Código MySQL:
Ver original
  1. SELECT d.Maleta, d.CVA, m.Municipio, d.Parroquia, COUNT(dmt.componente_id) totalcontenido
  2. FROM despacho d  
  3.     INNER JOIN despacho_maleta dm ON d.despacho_id = dm.despacho_id
  4.     INNER JOIN detalle_maleta dmt ON dm.maleta_id = dmt.maleta_id
  5.     INNER JOIN municipio m ON d.Municipio = m.Cod_Municipio
  6. GROUP BY d.Maleta, d.CVA, m.Municipio, d.Parroquia;
O si van cantidades diferentes del mismo componente en la maleta, y quieres saber las categorías diferentes, sería mas o menos:
Código MySQL:
Ver original
  1. SELECT d.Maleta, d.CVA, m.Municipio, d.Parroquia, COUNT(DISTINCT dmt.componente_id) totalcontenido
  2. FROM despacho d  
  3.     INNER JOIN despacho_maleta dm ON d.despacho_id = dm.despacho_id
  4.     INNER JOIN detalle_maleta dmt ON dm.maleta_id = dmt.maleta_id
  5.     INNER JOIN municipio m ON d.Municipio = m.Cod_Municipio
  6. GROUP BY d.Maleta, d.CVA, m.Municipio, d.Parroquia;

Podemos seguir, pero si estás planteando las tablas de esa forma es que no has profundizado en el paradigma relacional, y tu base no cumple con los fundamentos del modelo Entidad-Relación.
¿Has verificado eso?

Nota: Si estas consultas te resultan complicadas, deberías ver las que usamos en la emrpesa, en el mundo real...

__________________
¿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 27/06/2014, 09:55
 
Fecha de Ingreso: abril-2014
Mensajes: 35
Antigüedad: 10 años
Puntos: 0
Respuesta: Consulta de codigo

Si a eso me refería, crear e otra tabla entonces donde se almacene esa información. Gracias por tomarte tu tiempo lo haré como me dices

Etiquetas: join, php, select, sql
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:21.