• Viernes 8 de Noviembre de 2024, 18:40

Autor Tema:  Error con subconsulta NOT EXISTS  (Leído 1237 veces)

Kyrylys

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
Error con subconsulta NOT EXISTS
« en: Viernes 7 de Noviembre de 2008, 18:36 »
0
Buenas de nuevo. Paso a exponerles el problema, creo que la solución es la adecuada, pero la sintaxis no debe serlo ; )

tengo tres tablas relacionadas entre si

articulos(art) tiene un id (id_art) y un nombre (nom)
proveedores(prov) tiene un id(id_prov) y un nombre(nom)
art_prov tiene el id de articulo, el id de proveedores

los articulos pueden tener null, 1 o más de un proveedor, por eso la razon de la tabla art_prov, si el articulo carece de proveedor no esta en la tabla, y si tiene mas de uno hace una fila por cada uno.
y quiero listar los articulos que no tienen proveedor, o sea que su id de articulo no aparezca en la tabla art_prov

Hasta ahi el planteamiento, creo que es correcto, lo malo es la query en si. yo pongo esto

Código: Text
  1.  
  2. SELECT DISTINCT id_art, nom FROM art WHERE NOT EXISTS (SELECT art_prov.id_art FROM WHERE art_prov.id_art = art.id_art );
  3.  
  4.  

pero me dice:
Citar
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE art_prov.id_art = art.id_art )' at line 2

De nuevo gracias por vuestro tiempo
Un saludo

PD: tambvién he intnetado con NOT IN, creia que no lo soportaba, pero parece ser que si.

Pd2: creo que ya lo he solucionado con:
Código: Text
  1. SELECT nom,id_art FROM art
  2. WHERE id_art NOT IN (SELECT id_art FROM art_prov)ORDER BY id_art;
  3.