0 Members and 1 Guest are viewing this topic.

*

drd00m

  • VIP
  • ***
  • 826
  • Gender: Male
  • Esta vieja es peor que el tuerto.
    • View Profile
Ayuda con SQL
« on: January 18, 2011, 04:03:37 PM »
Necesito alguien que me pueda ayudar un poco a entender las relaciones "muchos a muchos" y que me ayude a crear un par de tablas.



*

KaDoRRnA

  • VIP
  • ***
  • 315
  • Gender: Male
  • El silencio en mis actuaciones es siempre genuino
    • View Profile
    • Alkon
Re: Ayuda con SQL
« Reply #1 on: January 18, 2011, 05:37:24 PM »
Una relacion muchos a muchos es cuando uno o mas elementos de una tabla estan relacionados con uno o mas elementos de otra.

Saludos.


"mis pintajes son de brocha gorda"

Dolor cuando se muestra la hilacha... :(

*

drd00m

  • VIP
  • ***
  • 826
  • Gender: Male
  • Esta vieja es peor que el tuerto.
    • View Profile
Re: Ayuda con SQL
« Reply #2 on: January 18, 2011, 05:46:28 PM »
Lo se, pero es un poco mas complicada la duda que tengo :)

*

Bubhosh

  • VIP
  • ***
  • 474
  • Gender: Male
    • View Profile
Re: Ayuda con SQL
« Reply #3 on: January 18, 2011, 09:11:29 PM »
por que no la posteas la duda? Que SQL es y demas.
Igualmente probaste con algun foro como forosdelweb.com o alguno de SQL?
Salu2
"No importa de namber..."

*

drd00m

  • VIP
  • ***
  • 826
  • Gender: Male
  • Esta vieja es peor que el tuerto.
    • View Profile
Re: Ayuda con SQL
« Reply #4 on: January 18, 2011, 09:37:53 PM »
Quiero hacer una base de datos bien bien completa. Como la BD esta estrictamente relacionada a la magia pense en postearlo aca para ver si algun mago mas o menos estaba en el tema.

Hasta ahora creo que entiendo todo bien. La mayor duda que tengo es que motor de almacenamiento usar, porque por lo que vi el MyISAM no soporta claves foraneas, y creo que yo necesito de eso. Se que el InnoDB si las permite, pero creo que MyISAM las va a implementar en el futuro y quisiera saber si me conviene esperar a que ocurra eso.

Tambien como el tema de las relaciones "muchos a muchos" es un poco complejo, me gustaria saber si estoy diseñando bien la BD.

Para que se den una idea lo que quiero hacer es algo como en archive.denisbehr.de pero mucho mas completo y mejor, como lo habia planteado un tiempo atras con magicdb.com.ar; solo que la idea de usar un foro para tal objetivo no es la mejor opcion, como si lo es una BD.

*

DaneDumaC

  • VIP
  • ***
  • 178
  • Gender: Male
    • View Profile
Re: Ayuda con SQL
« Reply #5 on: January 18, 2011, 09:49:42 PM »
y MySQL ?

*

drd00m

  • VIP
  • ***
  • 826
  • Gender: Male
  • Esta vieja es peor que el tuerto.
    • View Profile
Re: Ayuda con SQL
« Reply #6 on: January 18, 2011, 10:33:34 PM »
Si si, estoy usando MySQL. Por lo que averigue para grandes empresas se utiliza Oracle, y para pequeñas BD se utiliza MySQL o MS SQL Server.

El problema es que hay muchos conceptos diferentes que a veces resultan confusos. Por lo que yo entendi SQL es el lenguaje, MySQL (en mi caso) es el servidor, pero lo que yo necesito saber es el motros de almacenamiento (InnoDB o MyISAM).
« Last Edit: January 18, 2011, 10:37:40 PM by drd00m »

*

Kirk

  • Moderadores
  • *****
  • 8594
  • Gender: Male
  • NORP
    • View Profile
    • Zeitgeist: El Espíritu del Tiempo
Re: Ayuda con SQL
« Reply #7 on: January 19, 2011, 12:59:33 AM »
SQL no es un lenguaje de programación, sino de consulta y manejo de tablas.

Para manejar bases de datos grandes no importa tanto el soft sino las propiedades de hardware del servidor. MySQL deberí­a funcionar bien. Y en cuanto a la pregunta inicial, es como dice Kado.
"No soy un humanitario, no me malinterpreten. Hay sociedades que funcionan y sociedades que no.
Estamos hablando de implementar una sociedad que realmente funcione." -Fresco

*

drd00m

  • VIP
  • ***
  • 826
  • Gender: Male
  • Esta vieja es peor que el tuerto.
    • View Profile
Re: Ayuda con SQL
« Reply #8 on: November 14, 2012, 08:27:04 PM »
Tengo una tabla Medios con un campo idMedio y otro campo Medio.

Code: [Select]
+-------+--------------------+
|idMedio|        Medio       |
+-------+--------------------+
|   0   | Fat Brothers Vol. 1|
+-------+--------------------+

Tengo una tabla relMediosMagos con un campo idMedio y otro campo idMago.

Code: [Select]
+-------+------+
|idMedio|idMago|
+-------+------+
|   0   |   0  |
|   0   |   1  |
|   0   |   2  |
+-------+------+

Tengo una tabla Magos con un campo idMago y otro campo Nombre.

Code: [Select]
+------+-----------------+
|idMago|     Nombre      |
+------+-----------------+
|   0  |Miguel Angel Gea |
|   1  |Dani Daortiz     |
|   2  |Christian Englbom|
+-------+----------------+

Si un medio es autoria de varios magos, la consulta SELECT * FROM Medios JOIN relMediosMagos on Medios.idMedio=relMediosMagos.idMedio JOIN Magos on relMediosMagos.idMago=Magos.idMago me devuelve un registro por cada autor. Por ejemplo:

Code: [Select]
+-----------------+-------------------+
|      Nombre     |       Medio       |
+-----------------+-------------------+
|Miguel Angel Gea |Fat Brothers Vol. 1|
|Dani Daortiz     |Fat Brothers Vol. 1|
|Christian Engblom|Fat Brothers Vol. 1|
+-----------------+-------------------+

Existe alguna consulta que me muestre un solo registro agrupando los nombres en un solo campo? Por ejemplo:

Code: [Select]
+--------------------------------------------------+-------------------+
|                         Nombre                   |       Medio       |
+--------------------------------------------------+-------------------+
|Miguel Angel Gea, Dani Daortiz, Christian Engblom |Fat Brothers Vol. 1|
+--------------------------------------------------+-------------------+
« Last Edit: November 14, 2012, 08:32:29 PM by drd00m »

*

Kirk

  • Moderadores
  • *****
  • 8594
  • Gender: Male
  • NORP
    • View Profile
    • Zeitgeist: El Espíritu del Tiempo
Re: Ayuda con SQL
« Reply #9 on: November 14, 2012, 08:42:44 PM »
Hmm... Se puede hacer pero no desde la consulta de SQL. Una vez que tenés la tabla (la última) la pasas por un algoritmo de que te haga eso. Serí­a más o menos así­:

Copias primer Nombre y Medio de Tabla a TablaNew
A partir de la segunda empezas a chequear que Medio ya no exista en TablaNew
Si existe, TableNew_Nombre=TablaNew_Nombre+", "+Tabla_Nombre
Y así­ hasta el final de Tabla

Es la idea muy muy básica. Si querés te la puedo escribir en pseudocódigo...
"No soy un humanitario, no me malinterpreten. Hay sociedades que funcionan y sociedades que no.
Estamos hablando de implementar una sociedad que realmente funcione." -Fresco

*

Alan Brian

  • VIP
  • ***
  • 2686
    • View Profile
Re: Ayuda con SQL
« Reply #10 on: November 15, 2012, 12:19:18 AM »
« Last Edit: November 15, 2012, 12:21:24 AM by Alan Brian »

*

drd00m

  • VIP
  • ***
  • 826
  • Gender: Male
  • Esta vieja es peor que el tuerto.
    • View Profile
Re: Ayuda con SQL
« Reply #11 on: November 15, 2012, 01:33:24 AM »
Perdonen la pedanteria, pero soy groso.

Code: [Select]
SELECT Medio, GROUP_CONCAT(Nombre) AS nuevo FROM Medios JOIN relMediosMagos on Medios.idMedio=relMediosMagos.idMedio JOIN Magos on relMediosMagos.idMago=Magos.idMago GROUP BY Medios.idMedio

*

Kirk

  • Moderadores
  • *****
  • 8594
  • Gender: Male
  • NORP
    • View Profile
    • Zeitgeist: El Espíritu del Tiempo
Re: Ayuda con SQL
« Reply #12 on: November 15, 2012, 01:55:06 AM »
¿Lo lograste? Genial... Se ve que ya no recuerdo tanto la utilidad de SQL...
"No soy un humanitario, no me malinterpreten. Hay sociedades que funcionan y sociedades que no.
Estamos hablando de implementar una sociedad que realmente funcione." -Fresco

*

drd00m

  • VIP
  • ***
  • 826
  • Gender: Male
  • Esta vieja es peor que el tuerto.
    • View Profile
Re: Ayuda con SQL
« Reply #13 on: November 15, 2012, 02:04:58 AM »
http://www.drd00m.com.ar/test.php

Va a llevar mucho laburo. Ya casi termino con el diseño de la DB y ya estoy empezando a programar el sistema en PHP.

*

drd00m

  • VIP
  • ***
  • 826
  • Gender: Male
  • Esta vieja es peor que el tuerto.
    • View Profile
Re: Ayuda con SQL
« Reply #14 on: November 17, 2012, 06:40:48 AM »
Borrar.
« Last Edit: January 27, 2016, 08:47:22 PM by drd00m »