Dividir dos consultas y mostrarla en una sola cons

Como están, espero que bien, la pregunta que tengo es la siguiente resulta que tengo que dividir dos consultas en Acceess y mostrarla en una sola consulta, el problema que tengo es que me muestra un resultado erróneo al dividir las dos consultas, esta consulta es de tipo porcentual y es la siguiente.
SELECT Count([Preguntas].[pregunta1]) AS [Porcentaje Antes pregunta 1]
FROM preguntas
WHERE (((preguntas.pregunta1)="Antes"))/(SELECT COUNT(*) FROM preguntas);
Aquí deseo dividir dos consultas...

1 respuesta

Respuesta
1
Si quieres unir dos consultas has de hacer una consulta UNION, sólo disponible en Access en vista SQL, la manera más coómda es la siguiente:
1.- Haz la primera, en vista diseño, o vista SQL, "SELECT ..." (cadenaSQL1)
2.- Haz una segunda, en vista diseño, o vista SQL. La pones en vista SQL y copias en el portapapeles la cadena SQL (CadenaSQL2).
3.- Vuelves a la primera consulta, y en vista SQL, escribes UNION y pegas a continuación el SQL de la segunda, guardala con el nombre que quieras, y ya está.
Te ha de quedar algo así:
CadenaSQL1 UNION CadenaSQL2
Según las contultas que pones en el ejemplo, algo así:
SELECT Count([Preguntas].[pregunta1]) AS [Porcentaje Antes pregunta 1] FROM preguntas WHERE (((preguntas.pregunta1)="Antes"))
UNION SELECT COUNT(*) FROM preguntas
Has de tener en cuenta algunas cosas tales como que
- La estructura de campos de ambas consultas ha de ser igual
- Usando el AS mantiene el nombre de campo del primer SQL
- Que elimina valores duplicados al estilo del GROUP BY
- Aunque sueloe ser necesario, te recomiendo quitar los ; al final de cada SQL, deja sólo el último o se lo pone Access solo. Es más intuitivo al leerlo, y puede dar algún problema según las versiones e instalaciones de Acess.
Hola como te va te agradesco tu interes pero resulta lo siguiete, lo que necesito hacer es dividir la consulta
SELECT Count([Preguntas].[pregunta1]) AS [Porcentaje Antes pregunta 1]
FROM preguntas
WHERE (((preguntas.pregunta1)="Antes"
entre esta consulta
SELECT Count(*) AS Expr1
FROM preguntas;
Lo de Union por lo que veo lo que hace es unir las dos consultas más no dividirlas,
Gracias
Att. Hernan Camilo.
Porcentaje de preguntas1='Antes' en el total:
SELECT 100*Count([Preguntas].[pregunta1])/(SELECT COUNT(*) FROM preguntas) AS [Porcentaje Antes pregunta 1]
FROM preguntas
WHERE (((((([preguntas].[pregunta1])='Antes')))<>False));
Disculpa por la contestación anterior, entendí "dividir" como separar, no como operación matemática.
a) Este SQL te da el % de preguntas respondidas como 'Antes' en el campo pregunta1, teniendo en cuenta los valores nulos el el total al dividir:
SELECT 100*Count([Preguntas].[pregunta1])/(SELECT COUNT(*) FROM preguntas) AS [Porcentaje Antes pregunta 1]
FROM preguntas
WHERE (((preguntas.pregunta1)='Antes'));
b) Este SQL te da el % de las preguntas respondidas como 'Antes' en el campo pregunta1, sin tener en cuenta los valores nulos en el total al dividir:
SELECT 100*Count([Preguntas].[pregunta1])/(SELECT Count(*) FROM preguntas WHERE (((preguntas.pregunta1) Is Not Null));) AS [Porcentaje Antes pregunta 1]
FROM preguntas
WHERE (((preguntas.pregunta1)='Antes'));
Tabla Preguntas
Pregunta1 Pregunta 2 ...
Antes Antes
Antes Siempre
                     Nunca
Siempre Antes
con el SQL a) Antes=2, Count=4 --> 50%
con el SQL b) Antes=2, Count=3 (no cuenta los valores nulos) --> 75%
Le he puesto el 100*, para que muestre el tanto por ciento, si luego le vas a dar formato, se lo puedes quitar
Excelente Muchas gracias ahora lo que deseo es unir tres consultas y que me la muestre en una sola, trate de utilizar el operador UNION pero lo que el hace es combinarme la consulta en una sola tabla con un solo campo, lo que deseo es que me una las tres consultas en una sola tabla con los tres campos, cada campo es una consulta.
Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas