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!
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:

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:

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á:

SELECT * FROM autor INNER JOIN cancion USING(autor_id)

Y para insertar datos:

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.
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!