Regresar a la página ComoCrearTuWeb.com
Resultados 1 al 3 de 3

Tema: Consulta a dos tablas y recoger varias variables a partir de una en comun

  1. #1
    Me va gustando esto... Habitante
    Fecha de Ingreso
    19 feb, 13
    Mensajes
    47
    Poder de Reputación
    13

    Consulta a dos tablas y recoger varias variables a partir de una en comun

    Hola a todos foreros! Pues tengo otro problemilla cuya solución tengo, pero espero que haya otra más viable.

    Tengo dos tablas, una llamada bddmusica, donde tengo la información de los autores de mi base de datos, y otra llamada canciones, donde están las canciones de mi base de datos.

    La variable en común es la de "autor", viene a ser, el nombre:
    bddmusica:
    autor: Ignacio
    primerapellido: perez
    segundoapellido: martín

    canciones:
    título: titulocancion
    autor: Ignacio

    Quiero hacer una "lista general" de canciones, entonces hago un "SELECT * FROM bddmusica, canciones WHERE bddmusica.autor = canciones.autor". Esto me sirve cuando quiero filtrar solo un resultado enviado por url, pero para esta lista general no funciona. Lo que hace es introducirme el mismo primerapellido, segundoapellido para todos, algo normal xD atendiendo a la consulta. Me gustaría saber si hay manera de indicar el registro, es decir, donde el bddmusica.autor = canciones.autor y cuando esto ocurra dispongas "primerapellido" y "segundoapellido" atendiendo a cada registro específico en el que exista esa coincidencia....
    Espero haberme explicado.


    PD: la solución de incluir autor, primerapellido y segundoapellido en canciones es una opción, pero la intención es optimizar la inserción de registros, no tener que poner cada vez que eso todos los datos.

    Un saludo y gracias a todos!

  2. #2
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,046
    Poder de Reputación
    27
    Hola:

    Tu base de datos esta mal diseñada :P, pues no deberían existir datos duplicados (autor en dos tablas está mal). Lo que debes hacer, para normalizar la base de datos, es referenciar las tablas en base a los ID:

    Código:
    CREATE TABLE autor (
      autor_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
      nombre VARCHAR(100) NOT NULL,
      primerapellido VARCHAR(100) NOT NULL,
      segundoapellido VARCHAR(100) NOT NULL
    ) ENGINE=InnoDB;
    
    CREATE TABLE cancion (
      cancion_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
      titulo VARCHAR(100) NOT NULL UNIQUE,
      autor_id INT(11) NOT NULL, //debe ser la misma definición del autor_id en la tabla autor.
      INDEX(autor_id)
    ) ENGINE=InnoDB;
    Después de crear las tablas, ejecuta esta consulta:

    Código:
    ALTER TABLE cancion ADD FOREIGN KEY cancion_ref_autor(autor_id) REFERENCES autor(autor_id);
    Para seleccionar datos de tablas distintas, lo siguiente te servirá:

    Código:
    SELECT * FROM autor INNER JOIN cancion USING(autor_id)
    Y para insertar datos:

    Código:
    INSERT INTO cancion SET titulo = 'El título', autor_id = id_del_autor // El id_del_autor debe existir antes de añadir una canción.

  3. #3
    Me va gustando esto... Habitante
    Fecha de Ingreso
    19 feb, 13
    Mensajes
    47
    Poder de Reputación
    13
    Gracias Skaparate ;)! La verdad es que he estado mirando tu código y al final no lo he usado. Tenías razón con el planteamiento de la tabla, siempre tienen que ser primary key, sino sucede el caos xD. Lo que he hecho para la lista general es una consulta a ambas bases de datos:

    Select * FROM bddmusica (la que tu pones como autor), canciones WHERE bddmusica.autor_id = canciones.autor_id

    Y solucionado xD; repetir región y fuera. Pero gracias a tu respuesta he resuelto los problemas en páginas dinámicas, solo tenía que mandar también el autor_id por url. (He estado espesito ;)).

    Un saludo!

    PD: por las respuestas que me has dado desde que estoy en el foro...poder de reputaision!

Temas Similares

  1. pasar variables en consulta leer mas en php
    Por luispolobenites en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 1
    Último Mensaje: 13/11/2014, 20:51
  2. Consulta e insercion de dos tablas
    Por SuperHipo en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 5
    Último Mensaje: 22/04/2012, 21:10
  3. no me salen los ejemplos a partir de la lección tablas!
    Por laura87 en el foro Curso Paso a Paso con Html-Kit.
    Respuestas: 3
    Último Mensaje: 15/03/2012, 14:39
  4. Consulta - Varias bases de datos
    Por nosabernada en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 5
    Último Mensaje: 21/04/2009, 16:38

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •