Consulta en Access
Pues tengo una consulta q he creado, es una consulta con una subconsulta anidada, mi problema es que la subconsulta devuelve + de una tabla, cosa q la consulta principal no puede aceptar, he intentado añadiendo EXISTS,pero sera por mi poco conocimiento de esa intruccion o cualquier otra causa q la consulta sigue sin funcionar, si alguien me puede ayudar ahi va la consulta:
(Es de actualizacion)
UPDATE Contrato INNER JOIN Contenedor ON Contrato.IdContrato = Contenedor.Contrato SET Contrato.Precio = "gratis"
where contrato.IdContrato in
(SELECT Count(Contenedor.Contrato) AS nºContenedores, Contenedor.Contrato
FROM Contrato INNER JOIN Contenedor ON Contrato.IdContrato = Contenedor.Contrato
GROUP BY Contenedor.Contrato
HAVING (((Count(Contenedor.Contrato))>2))
ORDER BY Count(Contenedor.Contrato) DESC);
(Es de actualizacion)
UPDATE Contrato INNER JOIN Contenedor ON Contrato.IdContrato = Contenedor.Contrato SET Contrato.Precio = "gratis"
where contrato.IdContrato in
(SELECT Count(Contenedor.Contrato) AS nºContenedores, Contenedor.Contrato
FROM Contrato INNER JOIN Contenedor ON Contrato.IdContrato = Contenedor.Contrato
GROUP BY Contenedor.Contrato
HAVING (((Count(Contenedor.Contrato))>2))
ORDER BY Count(Contenedor.Contrato) DESC);
Me parece que el problema esta en la subconsulta, me imagino que hayas probado la subconsulta aparte (como una consulta de seleccion normal) para ver si te devuelve los registros que deseas. En fin, te debe quedar de la siguiente manera:
UPDATE Contrato INNER JOIN Contenedor ON Contrato.IdContrato = Contenedor.Contrato SET Contrato.Precio = "gratis"
where contrato.IdContrato in
(SELECT Contenedor.Contrato
FROM Contrato INNER JOIN Contenedor ON Contrato.IdContrato = Contenedor.Contrato
GROUP BY Contenedor.Contrato
HAVING (((Count(Contenedor.Contrato))>2))
ORDER BY Count(Contenedor.Contrato) DESC);
solo elimine la primera columna de la subconsulta porque no tiene sentido que compares cantidad de contenedores con IdContrato.
Si eso no resulta, no entendi lo que quieres. Tambien echale un vistazo a los parentesis.
UPDATE Contrato INNER JOIN Contenedor ON Contrato.IdContrato = Contenedor.Contrato SET Contrato.Precio = "gratis"
where contrato.IdContrato in
(SELECT Contenedor.Contrato
FROM Contrato INNER JOIN Contenedor ON Contrato.IdContrato = Contenedor.Contrato
GROUP BY Contenedor.Contrato
HAVING (((Count(Contenedor.Contrato))>2))
ORDER BY Count(Contenedor.Contrato) DESC);
solo elimine la primera columna de la subconsulta porque no tiene sentido que compares cantidad de contenedores con IdContrato.
Si eso no resulta, no entendi lo que quieres. Tambien echale un vistazo a los parentesis.