Comunidad de diseño web y desarrollo en internet online

ayuda con tablas que herendan

Citar            
MensajeEscrito el 07 Dic 2010 03:54 pm
hola tengo un modelo de este tipo en mysql



las tablas de abajo heredan de la tabla reglas , mi duda es como hago una consulta para que me traiga los datos de alguna de las tablas hijas sabiendo el idregla padre?


saludos

Por RIVERMILLOS

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Dic 2010 05:57 pm

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 07 Dic 2010 06:54 pm
Hola muchas gracias por tu respuesta pero creo que no me explique bien , voy a poner un ejemplo.

digamos que tengo el idreglas "1515" y este ID debe estar en alguna de las tablas heredadas como se que cual esta , me tocaria hacer una consulta a cada tabla con ese ID? o seria mejor colocar en la tabla REGLAS un campo que diga en que tabla esta?


saludos

Por RIVERMILLOS

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Dic 2010 07:32 pm
esto se hace usando joins, por eso el link que te mande, aca puedes ver otra DB (real) para que veas como se relacionan las tablas.

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 07 Dic 2010 08:50 pm
Hola gracias me podrias dar un ejemplo de la consutla con el ejemplo que te di es que todabia no comprendo muy bien.


saludos

Por RIVERMILLOS

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Dic 2010 09:38 pm
por ejemplo para ver los items que tiene el usuario 8

Código MySQL :

SELECT u.`username`, i.`titulo`,i.`descripcion` 
FROM users u
INNER JOIN `items` i ON u.`id` = i.`id_user`
WHERE u.`id`= 8;

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 08 Dic 2010 03:30 am
hola muchas gracias , asi es el tipo de consulta que necesito , la diferencia es que yo no se cual de las 5 tablas tendria que colocar en el from pues la consulta puede ser dinamica no siempre va hacer a la misma pero no se como hacer esto, tienes alguna idea?

saludos

Por RIVERMILLOS

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Dic 2010 03:54 am
Creo que te estas planteando mal problema. Explica mejor el problema que tienes y vemos en que te podemos ayudar.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 08 Dic 2010 05:16 am
RIVERMILLOS las cosas demasiado dinamicas y demasiado .NET ganan flexibilidad, pero pierden rendimiento. lo mejor que puedes hacer es hacer las consultas y SP correspondientes y luego llamas el que necesitas, ojo en los SP puedes usar la sentiencia IF

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 08 Dic 2010 04:54 pm
Bueno voy a explicar un poco mas , las tablas de arriba q coloque son reglas de un juego estilo monopolio entonces la tabla reglas va ligada a otra llamada "reglasXpropiedades" y esta a "propiedades" , entonces la dinamica es asi cada propiedad tiene unas reglas pero no siempre son las mismas entonces yo solo se el id unico de la regla pero no se de que tabla heredada es este id osea las 5 de abajo , no se como hacer para saber a que tabla debo consultar por eso decia que si seria bueno colocar en la tabla reglas un campo donde diga en que tabla heredada esta ese id?


saludos

Por RIVERMILLOS

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Dic 2010 05:08 pm
a eso ya te di la respuesta estudia el material

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 09 Dic 2010 12:14 am
Hola seria algo asi

Código PHP :

SELECT 'loquesea'  FROM reglas r
INNER JOIN preguntas2op p2
ON r.id=p2.id
INNER JOIN preguntas4op P4
ON r.id=P4.id
INNER JOIN normales N
ON N.id=r.id
WHERE r.id=1414;


si es asi en el select que deberia ir ya que en la tabla que este ese id necesito todo el registro completo iria un * pero de que forma?

saludos

Por RIVERMILLOS

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Dic 2010 12:32 am
no es recomendable usar * en una consulta, en el tutorial explicamos por que, tambien en los comentarios se dijo, el uso de * es util para desarrollo, osea ver todos los datos que son traidos en la consulta y luego elegir cuales mostrar

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 09 Dic 2010 12:58 am
si pero entonces como haria si las tablas no tienen los mismos campos ?


saludos

Por RIVERMILLOS

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Dic 2010 01:29 am

RIVERMILLOS escribió:

si pero entonces como haria si las tablas no tienen los mismos campos ?


de eso trata diseñar una DB, el siempre poner correctamente las llaves foraneas que conectan con otra tabla, al igual que tengo en la imagen que te mostre, si faltan, las vas a tener que colocar

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 09 Dic 2010 12:55 pm
Según he entendido de lo que se ha escrito tienes un error de diseño de la DB. Si tienes diferentes reglas con el mismo ID y cada tipo de regla las tienes en diferentes tablas entonces necesitas una tabla más que te indique en qué otra tabla están los datos para esa regla, es decir, una tabla intermedia. Si hay más de una tabla entonces esa tabla intermedia tendrá que ser grupo repetitivo.

De otra forma podrías poner todas las propiedades en una sola tabla que aunque tenga absolutamente todos campos de las tablas que tienes ahora y algunos de esos campos no los uses para algunas reglas sí y otros no al menos te dará la flexibilidad necesaria para que en el futuro puedas cambiar el tipo de regla sin agregar registros nuevos (porque los campos necesarios ya estarán allí).

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 09 Dic 2010 01:27 pm
DriverOp solo necesite estudiar lo que ya le he dado, tiene el ejemplo que le acabo de poner y el ejemplo del tutorial que también es muy completo incluyendo tablas relacionales (para relaciones de tablas N aN )


además a preguntado otras cosas que ya han sido explicadas en el tutorial, en verdad no sacas nada con explicar si RIVERMILLOS no estudia por su cuenta

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 09 Dic 2010 03:13 pm
Inyaka: comprendo.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 09 Dic 2010 04:59 pm
Hola no es que no quiera estudiar es que no he entendido la correspondencia de lo que me pasaste a lo que yo necesito(lei el material y entendi el ejemplo) , pero pues creo que ya estoy entendiendo , Segun lo que me recomendaron podria hacer dos cosas hacer un SP por cada tabla usando INNER JOIN y llamar al que necesecite , para saber en que tabla esta podria usar la tabla adicional o simplemente ejecutar las consultas y la que me retorne datos es la correcta , asi es ? o esta mal.

saludos

Por RIVERMILLOS

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Dic 2010 05:29 pm
antes de meterte con SP procura entenderr bien el como estructurar una DB y hacer consultas cruzadas (con INNER o LEFT
JOIN)

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 09 Dic 2010 05:47 pm
Pues yo si entiendo como es que funcionan las consultas cruzadas igual voy a leer mas sobre esto antes de mirar los Sp.

saludos

Por RIVERMILLOS

50 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.