Es decir, se que hay diferentes formas, pero me encuentro conque tengo que enlazar muchas tablas y es un auténtico caos. Para simplificarme la vida lo he intentado hacer a traves de Access y un driver ODBC aver si así, pero es una consulta muy compleja (o puede que mal hecha) y no ejecutando la consulta se queda la vida eterna intentando realizarla hasta que me canso y tengo que colgarlo.
Esta es la consulta, tampoco creo que sea para tanto, lo único malo serían tantos enlaces. Hay un par de tablas que no se usan porque aun me quedan algunos datos por poner (con sumas de precios para mas inri) pero es que ya si no saco ni esto.
Se que se pueden hacer las relaciones de varias formas. Yo suelo usar esta, aunque se alguna más:
· WHERE tabla1 = tabla2 USING(clave)
Me suena que hay alguna forma de enlazar multiples tablas que usen la misma clave pero no estoy seguro de como es. Aquí la consulta que me crea el access automáticamente tras decirle que campos quiero consultar. La base de datos es un caos no la diseñé yo y está fatal hecha, así que tampoco ayuda.
Código MySQL:
Ver originalSELECT clientes.clacli
AS CÓDIGO
, articulo.nombre
AS NOMBRE
, clientes.direccion
AS DIRECCIÓN
, clientes.localidad
AS LOCALIDAD
, clientes.telefono
AS TELÉFONO
, clientes.contacto
AS CONTACTO
, clientes.provincia
AS PROVINCIA
, tarifa.nombre
AS TARIFA
FROM articulo
, catart
, factural
, tarifa
, (factura
INNER JOIN clientes
ON factura.clacli
=clientes.clacli
) INNER JOIN tiposcli
ON clientes.clatip
=tiposcli.clatip
WHERE articulo.clacat
=21 And clientes.clatip
=2;
Como veis los enlaces entre tablas son excesivamente complejos, me imagino que por eso se muere.
He intentado hacerlo a mano pero no logro seguir un orden lógico.
Si enlazo articulo con catart (categoria articulo) luego esta categoria con cual la voy a enlazar? no se si me explico. Hay que seguir un orden no?
Este es el meollo:
TABLA -> Su clave y las que llama
articulo
claart(pk)
clacat (fk de categoria articulo)
factura
clafac(pk)
factural
clafacl (pk)
clafact (fk de factura)
tarifa
clatar (pk)
clientes
clacli (pk)
clatar (fk)
clatip (fk)
tiposcli
clatip (pk)
catart
clacat (pk)
Como veis los nombres de las tablas e ids tampoco ayudan mucho. Un auténtico lío. No pido que me hagais la relación sino la sintaxis para poder enlazar varias tablas porque no encuentro un orden en el que hacerlo.
Extra: También si alguno de vosotros sabe me gustaría saber si en una subconsulta puedo hacer referencia a alguna de las claves de la consulta normal. Algo así:
SELECT campos, (SELECT otras_cosas FROM tablas WHERE id_de_la_otra_consulta) FROM tablas
Es decir que para cada id de la consulta principal me busque en la subconsulta.