tincho   15-08-2022, 20:54
#3
(15-08-2022, 20:43)Shordi escribió: Solo viendo eso creo que el diseño está equivocado. Deberías hacer una sola referencia a recipientes y una nueva tabla tipo de recipiente o algo así, con las entradas tuom, wtuom o las que necesites.
No sé si me explico.

No, la tabla recipientes tiene dos campos referenciados la unidad_temperatura y unidad_peso pero ambas unidades están listadas en la tabla unidades
Pero ya lo he solucionado, pongo la solucion.

Código:
CREATE TABLE "unidades" (
    "idx"    INTEGER,
    "name"    TEXT NOT NULL UNIQUE,
    "symbol"    TEXT,
    "type"    INTEGER,
    "basic"    TEXT,
    "other"    TEXT,
    FOREIGN KEY("type") REFERENCES "magnitudes"("idx"),
    PRIMARY KEY("idx" AUTOINCREMENT)
)

CREATE TABLE "recipientes" (
    "idx"    INTEGER,
    "tag"    TEXT NOT NULL UNIQUE,
    "wt"    REAL,
    "wtuom"    INTEGER,
    "temp"    REAL,
    "tuom"    INTEGER
    FOREIGN KEY("wtuom") REFERENCES "unidades"("idx"),
    FOREIGN KEY("tuom") REFERENCES "unidades"("idx"),
    PRIMARY KEY("idx" AUTOINCREMENT)
)

CREATE VIEW "view_recipientes" AS SELECT
    recipientes.idx AS idx,
    recipientes.tag AS tag,
    recipientes.wt AS wt,
    u1.name AS wtuom,
    recipientes.temp AS temp,
    u2.name AS tuom,
    FROM recipientes
LEFT JOIN unidades u1 ON recipientes.wtuom=u1.idx
LEFT JOIN unidades u2 ON recipientes.tuom=u2.idx
ORDER BY recipientes.idx,recipientes.tag ASC

Nota: el ejemplo que puse al principio esta mal hecho. Al tratar de simplificar la cosa la pifie. Creo que esto ultimo que pongo esta bien.
La solución pasa por declarar un alias cuando la tabla es referenciada mas de una vez, en este caso u1 y u2
Última modificación: 15-08-2022, 20:58 por tincho.

1 Saludo.
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.