Consulta complicada en sql

Al menos me lo parece a mí. He intentado de todo pero sin resultado. Verás. Tengo una bd access con la tabla PEDIDOS (campos: Nombre-Dirección-Fecha-Total-Id1-Id2-Id3-...-Id10) donde Id1 y hasta Id10 son un máximo de 10 pedidos por cliente. Cada Id se corresponderá con un código de pedido. (La tabla donde están estos códigos se llama ARTÍCULOS y sus campos son: IdArticulo(autonumérico)- Titulo- Autor-Editorial-Precio). Lo que quiero es una sentencia sql que me liste los datos del solicitante junto con los datos de cada pedido de artículos, es decir, fulanito en la fecha tal ha comprado tales libros por un total de tanto y los libros son tal cuyo autor es no sé quien ..., tal cuyo autor es no sé cuantos ..., y cual cuyo autor es zutanito. Lo he intentado con Left Outer Join, con Right Outer Join, con subconsultas pero no hay manera. Gracias por tu interés.

1 respuesta

Respuesta
A mi me parece que tu problema no esta en la complejidad de la consulta sino en el diseño de tu Base de Datos. La normalización en BDs relacionales nos indica que no debe haber campos repetitivos, OK, pero para solucionar esto se crean tablas separadas, con lo cual se simplifican las consultas haciendo los famosos "joins". Lo que yo te aconsejo es que reveas tu diseño de tablas, creando dos tablas: PEDIDOS_E (E de encabezado, con alguna clave primaria, como ser id_pedido) y luego crees otra tabla PEDIDOS_R (R de renglón) con campos como id_pedido (para saber a cual pedido pertenece), id_articulo y eventualmente cualquier otro dato que quieras almacenar del articulo. De este modo se hace mucho más fácil hacer consultas actualizaciones, etc.
En caso de que seas muy muy terco y mantengas tu diseño (no te lo aconsejo), deberías hacer el join de tu tabla PEDIDOS contra diez instancias diferentes de la tabla ARTÍCULOS por ejemplo, yo lo hago con dos id1 y id2:
select nombre, id1, a1.titulo, id2, a2.titulo, total
from PEDIDOS p, ARTICULOS a1, ARTICULOS a2
where p.id1 = a1.idarticulo
and p.id2 = a2.idarticulo
Así con los diez códigos, pero esto desde el punto de vista teórico es PÉSIMO.
Mariano

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas