Cita:
Iniciado por equality_211085 lo que quiero es una vista que me muestre los campos siguientes: titulomarc, idtipomaterial, idmarc pero la condicion seria que me muestre estos campos cuando el idmarc de la tabla marcmaterial sea distinto al de la tabla marc y que me lo muestr por cada material
Entonces los que se quire es: idmarc de la tabla "marc" tiene que ser distinto del idmarc de la tabla "marcmaterial" para así poder ver todos los idmarc de la tabla "marc" que no se le han asignado un idtipomaterial de la tabla "tipomaterial".
Así es como yo entiendo el planteamiento de tu problema, si esto es así, esto implica que se van a repetir idmarc que no tenga asignado un idtipomaterial, me explico:
Código sql:
Ver originalSELECT * FROM marcmaterial WHERE idmarc <= 10 ORDER BY idmarc;
idtipomaterial | idmarc
----------------+--------
2 | 1
1 | 2
3 | 4
2 | 4
1 | 4
3 | 5
1 | 5
2 | 5
3 | 8
2 | 8
1 | 8
3 | 9
2 | 9
1 | 9
2 | 10
1 | 10
(16 filas)
Al idmarc "1" le tienes asignado idtipomaterial "2", esto quiere decir, segun lo que entiendo de tu planteamiento, que quieres ver los idmarc que le falten por asignar un idtipomaterial con lo que el idmarc "1" se verá dos veces en la consulta, idmarc "1" para el idtipomaterial "1" y idmarc "1" para el idtipomaterial "3", o sea, que el idmarc "1" no tiene asignado Libros y CD-ROM, DVD respectivamente.
Si estoy en lo correcto y eso es lo que quieres, prueba con esta consulta a mi me funcionó:
Código SQL:
Ver original(
SELECT marc.idmarc AS "Marca", marc.codmarc, marc.titulomarc, tipomaterial.idtipomaterial
FROM marc, marcmaterial, tipomaterial
WHERE tipomaterial.idtipomaterial = marcmaterial.idtipomaterial
)
EXCEPT
(
SELECT marcmaterial.idmarc, marc.codmarc, marc.titulomarc, tipomaterial.idtipomaterial
FROM marc, marcmaterial, tipomaterial
WHERE tipomaterial.idtipomaterial = marcmaterial.idtipomaterial
)
ORDER BY "Marca"
LIMIT 10;
Marca | codmarc | titulomarc | idtipomaterial
-------+-----------------+---------------------------------+----------------
1 | 022 | ISSN | 3
1 | 022 | ISSN | 1
2 | 020 | ISBN | 3
2 | 020 | ISBN | 2
3 | 040 | Fuente de catalogación | 2
3 | 040 | Fuente de catalogación | 1
3 | 040 | Fuente de catalogación | 3
6 | 045 | Cronológico o Fecha/Hora | 2
6 | 045 | Cronológico o Fecha/Hora | 1
6 | 045 | Cronológico o Fecha/Hora | 3
(10 filas)
Como puedes ver el idmarc "1", (le puse el alias de "Marca"), aparece dos veces, cada una para cada idtipomaterial que aún no tiene asignado. El idmarc "3" aparece 3 veces porque no tiene asignado ningún idtipomaterial en la relación "marcmaterial".
LIMIT 10 lo puse solo para limitar la cantidad de registros de salida, el total devuelto fueron 132 registros.
Espero que te sirva, saludos y avísame cualquier cosa.