Por que mi select count... no hace left join?

21/11/2007 - 16:49 por gandy | Informe spam
hola tengo un problema con la mia sentencia sql!
cuando ejecuto la consulta no me hace el left join, por que ?
que puedo hacer para que me pinte todos los campos n_carro de la tabla
d_carros? existan en la select count

SELECT dbo.d_carros.n_carro, COUNT(dbo.colate.tempo) AS PIEZAS
FROM dbo.d_carros LEFT OUTER JOIN
dbo.colate ON dbo.colate.cod_porta_stampo =
dbo.d_carros.n_carro
WHERE (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') AND (dbo.colate.num_carosello = '2')
GROUP BY dbo.d_carros.n_carro
ORDER BY dbo.d_carros.n_carro

n_carro PIEZAS
1 10
2 12
4 10
5 12
6 14
8 12
9 12
10 8
11 10
12 12
13 10

(11 filas afectadas)

- Esta es la tabla d_carros, este es el contenido de la tabla, no hay
más en ella
n_carro d_carro o_carro
1 RD B-58 CONF Nv6 12
2 RD B-58 CONF Nv2 12
3 RD B-58 EXCLUSIF Nv3 12
4 RD B-58 CONF Nv2 12
5 RD B-58 CONF 12
6 RD B-58 CONF Nv2 12
7 RD B-58 CONF Nv1 12
8 RD B-58 CONF Nv2 12
9 RD B-58 CONF Nv2 12
10 RD B-58 EXCLUSIF Nv3 12
11 RD B-58 EXCLUSIF Nv3 12
12 RD B-58 EXCLUSIF Nv1 12
13 RD B-58 CONF Nv2 12


- Esta es la tabla colate no estan todos los campos por que
son sobre 65 campos
tempo cod_porta_stampo
num_carosello
-
-
2007-09-01 03:06:14.000 12 1
2007-09-01 03:06:14.000 12 1
2007-09-01 03:07:34.000 11 1
2007-09-01 03:07:34.000 11 1
2007-09-01 03:08:16.000 2 1
2007-09-01 03:08:16.000 2 1
2007-09-01 03:08:57.000 8 1
2007-09-01 03:08:57.000 8 1
2007-05-07 16:39:41.000 7 2
2007-05-07 16:40:28.000 5 2
2007-05-07 16:40:28.000 5 2
2007-05-07 16:41:07.000 11 2
2007-05-07 16:41:07.000 11 2
2007-05-07 16:41:53.000 10 2
2007-05-07 16:41:53.000 10 2
2007-05-07 16:42:32.000 1 2
2007-05-07 16:42:32.000 1 2
2007-05-07 16:42:59.000 12 2
2007-05-07 16:42:59.000 12 2
2007-05-07 16:43:41.000 9 2
2007-05-07 16:43:41.000

Preguntas similare

Leer las respuestas

#1 Diego Romero
21/11/2007 - 17:56 | Informe spam
Si incluye un campo de la tabla derecha de la relación LEFT JOIN (
dbo.colate) , como condición WHERE , la consulta devuelve solamente
las filas que cumplan la condición, las filas no existentes en dbo.colate
están en nulo.

WHERE (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') AND (dbo.colate.num_carosello = '2')




Podría ser:

WHERE ( (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') OR dbo.colate.tempo IS NULL)
AND (dbo.colate.num_carosello = '2' OR dbo.colate.num_carosello IS NULL)




Diego M Romero

"gandy" escribió en el mensaje
news:
hola tengo un problema con la mia sentencia sql!
cuando ejecuto la consulta no me hace el left join, por que ?
que puedo hacer para que me pinte todos los campos n_carro de la tabla
d_carros? existan en la select count

SELECT dbo.d_carros.n_carro, COUNT(dbo.colate.tempo) AS PIEZAS
FROM dbo.d_carros LEFT OUTER JOIN
dbo.colate ON dbo.colate.cod_porta_stampo > dbo.d_carros.n_carro
WHERE (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') AND (dbo.colate.num_carosello = '2')
GROUP BY dbo.d_carros.n_carro
ORDER BY dbo.d_carros.n_carro

n_carro PIEZAS
1 10
2 12
4 10
5 12
6 14
8 12
9 12
10 8
11 10
12 12
13 10

(11 filas afectadas)

- Esta es la tabla d_carros, este es el contenido de la tabla, no
hay
más en ella
n_carro d_carro o_carro
1 RD B-58 CONF Nv6 12
2 RD B-58 CONF Nv2 12
3 RD B-58 EXCLUSIF Nv3 12
4 RD B-58 CONF Nv2 12
5 RD B-58 CONF 12
6 RD B-58 CONF Nv2 12
7 RD B-58 CONF Nv1 12
8 RD B-58 CONF Nv2 12
9 RD B-58 CONF Nv2 12
10 RD B-58 EXCLUSIF Nv3 12
11 RD B-58 EXCLUSIF Nv3 12
12 RD B-58 EXCLUSIF Nv1 12
13 RD B-58 CONF Nv2 12


- Esta es la tabla colate no estan todos los campos por
que
son sobre 65 campos
tempo cod_porta_stampo
num_carosello
-
-
2007-09-01 03:06:14.000 12 1
2007-09-01 03:06:14.000 12 1
2007-09-01 03:07:34.000 11 1
2007-09-01 03:07:34.000 11 1
2007-09-01 03:08:16.000 2 1
2007-09-01 03:08:16.000 2 1
2007-09-01 03:08:57.000 8 1
2007-09-01 03:08:57.000 8 1
2007-05-07 16:39:41.000 7 2
2007-05-07 16:40:28.000 5 2
2007-05-07 16:40:28.000 5 2
2007-05-07 16:41:07.000 11 2
2007-05-07 16:41:07.000 11 2
2007-05-07 16:41:53.000 10 2
2007-05-07 16:41:53.000 10 2
2007-05-07 16:42:32.000 1 2
2007-05-07 16:42:32.000 1 2
2007-05-07 16:42:59.000 12 2
2007-05-07 16:42:59.000 12 2
2007-05-07 16:43:41.000 9 2
2007-05-07 16:43:41.000

Respuesta Responder a este mensaje
#2 gandy
22/11/2007 - 08:25 | Informe spam
Hola Diego,
Mira que lo he probado y sigue haciendo lo mismo, solo pinta los n_carros
que existan en el resultado del where, vamos que como no se utilizaron esos
carros en esas horas no aparecen en virtud de la where, pero debería mostrar
los 13 carros de la tabla d_carros, por que allí estan siempre, esa tabla es
un maestro, como puedo hacer, y me da igua lcon inner que con mi tia paca,
para mostrar todos los d_carros.n_carro existan o no en la clausula where,
quiero decir, que si el carro 3 no hizo nada entre esas horas que aparezca a
0 o null o lo que sea pero que aparezca. por donde puedo ver algo sobre esto?.

Muchisimas gracias por tu ayuda.

"Diego Romero" wrote:

Si incluye un campo de la tabla derecha de la relación LEFT JOIN (
dbo.colate) , como condición WHERE , la consulta devuelve solamente
las filas que cumplan la condición, las filas no existentes en dbo.colate
están en nulo.

> WHERE (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
> 08:00:00') AND (dbo.colate.num_carosello = '2')


Podría ser:

WHERE ( (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') OR dbo.colate.tempo IS NULL)
AND (dbo.colate.num_carosello = '2' OR dbo.colate.num_carosello IS NULL)




Diego M Romero

"gandy" escribió en el mensaje
news:
> hola tengo un problema con la mia sentencia sql!
> cuando ejecuto la consulta no me hace el left join, por que ?
> que puedo hacer para que me pinte todos los campos n_carro de la tabla
> d_carros? existan en la select count
>
> SELECT dbo.d_carros.n_carro, COUNT(dbo.colate.tempo) AS PIEZAS
> FROM dbo.d_carros LEFT OUTER JOIN
> dbo.colate ON dbo.colate.cod_porta_stampo > > dbo.d_carros.n_carro
> WHERE (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
> 08:00:00') AND (dbo.colate.num_carosello = '2')
> GROUP BY dbo.d_carros.n_carro
> ORDER BY dbo.d_carros.n_carro
>
> n_carro PIEZAS
> 1 10
> 2 12
> 4 10
> 5 12
> 6 14
> 8 12
> 9 12
> 10 8
> 11 10
> 12 12
> 13 10
>
> (11 filas afectadas)
>
> - Esta es la tabla d_carros, este es el contenido de la tabla, no
> hay
> más en ella
> n_carro d_carro o_carro
> 1 RD B-58 CONF Nv6 12
> 2 RD B-58 CONF Nv2 12
> 3 RD B-58 EXCLUSIF Nv3 12
> 4 RD B-58 CONF Nv2 12
> 5 RD B-58 CONF 12
> 6 RD B-58 CONF Nv2 12
> 7 RD B-58 CONF Nv1 12
> 8 RD B-58 CONF Nv2 12
> 9 RD B-58 CONF Nv2 12
> 10 RD B-58 EXCLUSIF Nv3 12
> 11 RD B-58 EXCLUSIF Nv3 12
> 12 RD B-58 EXCLUSIF Nv1 12
> 13 RD B-58 CONF Nv2 12
>
>
> - Esta es la tabla colate no estan todos los campos por
> que
> son sobre 65 campos
> tempo cod_porta_stampo
> num_carosello
> -
> -
> 2007-09-01 03:06:14.000 12 1
> 2007-09-01 03:06:14.000 12 1
> 2007-09-01 03:07:34.000 11 1
> 2007-09-01 03:07:34.000 11 1
> 2007-09-01 03:08:16.000 2 1
> 2007-09-01 03:08:16.000 2 1
> 2007-09-01 03:08:57.000 8 1
> 2007-09-01 03:08:57.000 8 1
> 2007-05-07 16:39:41.000 7 2
> 2007-05-07 16:40:28.000 5 2
> 2007-05-07 16:40:28.000 5 2
> 2007-05-07 16:41:07.000 11 2
> 2007-05-07 16:41:07.000 11 2
> 2007-05-07 16:41:53.000 10 2
> 2007-05-07 16:41:53.000 10 2
> 2007-05-07 16:42:32.000 1 2
> 2007-05-07 16:42:32.000 1 2
> 2007-05-07 16:42:59.000 12 2
> 2007-05-07 16:42:59.000 12 2
> 2007-05-07 16:43:41.000 9 2
> 2007-05-07 16:43:41.000
>



Respuesta Responder a este mensaje
#3 Rafael Cano
22/11/2007 - 09:29 | Informe spam
Prueba con esto:

SELECT dbo.d_carros.n_carro, COUNT(dbo.colate.tempo) AS PIEZAS
FROM dbo.d_carros LEFT OUTER JOIN dbo.colate ON
(dbo.colate.cod_porta_stampo = dbo.d_carros.n_carro AND
(dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') AND dbo.colate.num_carosello = '2')
GROUP BY dbo.d_carros.n_carro
ORDER BY dbo.d_carros.n_carro



gandy escribió:
hola tengo un problema con la mia sentencia sql!
cuando ejecuto la consulta no me hace el left join, por que ?
que puedo hacer para que me pinte todos los campos n_carro de la tabla
d_carros? existan en la select count

SELECT dbo.d_carros.n_carro, COUNT(dbo.colate.tempo) AS PIEZAS
FROM dbo.d_carros LEFT OUTER JOIN
dbo.colate ON dbo.colate.cod_porta_stampo =
dbo.d_carros.n_carro
WHERE (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') AND (dbo.colate.num_carosello = '2')
GROUP BY dbo.d_carros.n_carro
ORDER BY dbo.d_carros.n_carro

n_carro PIEZAS
1 10
2 12
4 10
5 12
6 14
8 12
9 12
10 8
11 10
12 12
13 10

(11 filas afectadas)

- Esta es la tabla d_carros, este es el contenido de la tabla, no hay
más en ella
n_carro d_carro o_carro
1 RD B-58 CONF Nv6 12
2 RD B-58 CONF Nv2 12
3 RD B-58 EXCLUSIF Nv3 12
4 RD B-58 CONF Nv2 12
5 RD B-58 CONF 12
6 RD B-58 CONF Nv2 12
7 RD B-58 CONF Nv1 12
8 RD B-58 CONF Nv2 12
9 RD B-58 CONF Nv2 12
10 RD B-58 EXCLUSIF Nv3 12
11 RD B-58 EXCLUSIF Nv3 12
12 RD B-58 EXCLUSIF Nv1 12
13 RD B-58 CONF Nv2 12


- Esta es la tabla colate no estan todos los campos por que
son sobre 65 campos
tempo cod_porta_stampo
num_carosello
-
-
2007-09-01 03:06:14.000 12 1
2007-09-01 03:06:14.000 12 1
2007-09-01 03:07:34.000 11 1
2007-09-01 03:07:34.000 11 1
2007-09-01 03:08:16.000 2 1
2007-09-01 03:08:16.000 2 1
2007-09-01 03:08:57.000 8 1
2007-09-01 03:08:57.000 8 1
2007-05-07 16:39:41.000 7 2
2007-05-07 16:40:28.000 5 2
2007-05-07 16:40:28.000 5 2
2007-05-07 16:41:07.000 11 2
2007-05-07 16:41:07.000 11 2
2007-05-07 16:41:53.000 10 2
2007-05-07 16:41:53.000 10 2
2007-05-07 16:42:32.000 1 2
2007-05-07 16:42:32.000 1 2
2007-05-07 16:42:59.000 12 2
2007-05-07 16:42:59.000 12 2
2007-05-07 16:43:41.000 9 2
2007-05-07 16:43:41.000




Salu2 Rafael Cano
rcanop(arroba)yahoo.es
Jaén - España
Respuesta Responder a este mensaje
#4 gandy
22/11/2007 - 09:41 | Informe spam
No sé como decir esto... TE QUIERO!! pero por que va ahora, me puedes hacer
una pequeña explicación?

Gracias una vez más y feliz año

"Rafael Cano" wrote:

Prueba con esto:

SELECT dbo.d_carros.n_carro, COUNT(dbo.colate.tempo) AS PIEZAS
FROM dbo.d_carros LEFT OUTER JOIN dbo.colate ON
(dbo.colate.cod_porta_stampo = dbo.d_carros.n_carro AND
(dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') AND dbo.colate.num_carosello = '2')
GROUP BY dbo.d_carros.n_carro
ORDER BY dbo.d_carros.n_carro



gandy escribió:
> hola tengo un problema con la mia sentencia sql!
> cuando ejecuto la consulta no me hace el left join, por que ?
> que puedo hacer para que me pinte todos los campos n_carro de la tabla
> d_carros? existan en la select count
>
> SELECT dbo.d_carros.n_carro, COUNT(dbo.colate.tempo) AS PIEZAS
> FROM dbo.d_carros LEFT OUTER JOIN
> dbo.colate ON dbo.colate.cod_porta_stampo =
> dbo.d_carros.n_carro
> WHERE (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
> 08:00:00') AND (dbo.colate.num_carosello = '2')
> GROUP BY dbo.d_carros.n_carro
> ORDER BY dbo.d_carros.n_carro
>
> n_carro PIEZAS
> 1 10
> 2 12
> 4 10
> 5 12
> 6 14
> 8 12
> 9 12
> 10 8
> 11 10
> 12 12
> 13 10
>
> (11 filas afectadas)
>
> - Esta es la tabla d_carros, este es el contenido de la tabla, no hay
> más en ella
> n_carro d_carro o_carro
> 1 RD B-58 CONF Nv6 12
> 2 RD B-58 CONF Nv2 12
> 3 RD B-58 EXCLUSIF Nv3 12
> 4 RD B-58 CONF Nv2 12
> 5 RD B-58 CONF 12
> 6 RD B-58 CONF Nv2 12
> 7 RD B-58 CONF Nv1 12
> 8 RD B-58 CONF Nv2 12
> 9 RD B-58 CONF Nv2 12
> 10 RD B-58 EXCLUSIF Nv3 12
> 11 RD B-58 EXCLUSIF Nv3 12
> 12 RD B-58 EXCLUSIF Nv1 12
> 13 RD B-58 CONF Nv2 12
>
>
> - Esta es la tabla colate no estan todos los campos por que
> son sobre 65 campos
> tempo cod_porta_stampo
> num_carosello
> -
> -
> 2007-09-01 03:06:14.000 12 1
> 2007-09-01 03:06:14.000 12 1
> 2007-09-01 03:07:34.000 11 1
> 2007-09-01 03:07:34.000 11 1
> 2007-09-01 03:08:16.000 2 1
> 2007-09-01 03:08:16.000 2 1
> 2007-09-01 03:08:57.000 8 1
> 2007-09-01 03:08:57.000 8 1
> 2007-05-07 16:39:41.000 7 2
> 2007-05-07 16:40:28.000 5 2
> 2007-05-07 16:40:28.000 5 2
> 2007-05-07 16:41:07.000 11 2
> 2007-05-07 16:41:07.000 11 2
> 2007-05-07 16:41:53.000 10 2
> 2007-05-07 16:41:53.000 10 2
> 2007-05-07 16:42:32.000 1 2
> 2007-05-07 16:42:32.000 1 2
> 2007-05-07 16:42:59.000 12 2
> 2007-05-07 16:42:59.000 12 2
> 2007-05-07 16:43:41.000 9 2
> 2007-05-07 16:43:41.000
>

Salu2 Rafael Cano
rcanop(arroba)yahoo.es
Jaén - España

Respuesta Responder a este mensaje
#5 Diego Romero
22/11/2007 - 14:23 | Informe spam
WHERE ( (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') OR dbo.colate.tempo IS NULL)
AND (dbo.colate.num_carosello = '2' OR dbo.colate.num_carosello IS NULL)




Que raro a mi me funciona
Bueno las columnas de la condición para nulo, deben ser de la tabla
dbo.colate

ó si no prueba utilizando una Sub-consulta:

SELECT dbo.d_carros.n_carro
,(SELECT COUNT(dbo.colate.tempo) FROM dbo.colate
WHERE dbo.colate.cod_porta_stampo=dbo.d_carros.n_carro
AND dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00' AND dbo.colate.num_carosello = '2') AS PIEZAS
FROM dbo.d_carros
GROUP BY dbo.d_carros.n_carro
ORDER BY dbo.d_carros.n_carro



Diego M Romero


"Diego Romero" escribió en el mensaje
news:
Si incluye un campo de la tabla derecha de la relación LEFT JOIN (
dbo.colate) , como condición WHERE , la consulta devuelve solamente
las filas que cumplan la condición, las filas no existentes en dbo.colate
están en nulo.

WHERE (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') AND (dbo.colate.num_carosello = '2')




Podría ser:

WHERE ( (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') OR dbo.colate.tempo IS NULL)
AND (dbo.colate.num_carosello = '2' OR dbo.colate.num_carosello IS NULL)




Diego M Romero

"gandy" escribió en el mensaje
news:
hola tengo un problema con la mia sentencia sql!
cuando ejecuto la consulta no me hace el left join, por que ?
que puedo hacer para que me pinte todos los campos n_carro de la tabla
d_carros? existan en la select count

SELECT dbo.d_carros.n_carro, COUNT(dbo.colate.tempo) AS PIEZAS
FROM dbo.d_carros LEFT OUTER JOIN
dbo.colate ON dbo.colate.cod_porta_stampo >> dbo.d_carros.n_carro
WHERE (dbo.colate.tempo BETWEEN '16/11/2007 07:00:00' AND '16/11/2007
08:00:00') AND (dbo.colate.num_carosello = '2')
GROUP BY dbo.d_carros.n_carro
ORDER BY dbo.d_carros.n_carro

n_carro PIEZAS
1 10
2 12
4 10
5 12
6 14
8 12
9 12
10 8
11 10
12 12
13 10

(11 filas afectadas)

- Esta es la tabla d_carros, este es el contenido de la tabla, no
hay
más en ella
n_carro d_carro o_carro
1 RD B-58 CONF Nv6 12
2 RD B-58 CONF Nv2 12
3 RD B-58 EXCLUSIF Nv3 12
4 RD B-58 CONF Nv2 12
5 RD B-58 CONF 12
6 RD B-58 CONF Nv2 12
7 RD B-58 CONF Nv1 12
8 RD B-58 CONF Nv2 12
9 RD B-58 CONF Nv2 12
10 RD B-58 EXCLUSIF Nv3 12
11 RD B-58 EXCLUSIF Nv3 12
12 RD B-58 EXCLUSIF Nv1 12
13 RD B-58 CONF Nv2 12


- Esta es la tabla colate no estan todos los campos por
que
son sobre 65 campos
tempo cod_porta_stampo
num_carosello
-
-
2007-09-01 03:06:14.000 12 1
2007-09-01 03:06:14.000 12 1
2007-09-01 03:07:34.000 11 1
2007-09-01 03:07:34.000 11 1
2007-09-01 03:08:16.000 2 1
2007-09-01 03:08:16.000 2 1
2007-09-01 03:08:57.000 8 1
2007-09-01 03:08:57.000 8 1
2007-05-07 16:39:41.000 7 2
2007-05-07 16:40:28.000 5 2
2007-05-07 16:40:28.000 5 2
2007-05-07 16:41:07.000 11 2
2007-05-07 16:41:07.000 11 2
2007-05-07 16:41:53.000 10 2
2007-05-07 16:41:53.000 10 2
2007-05-07 16:42:32.000 1 2
2007-05-07 16:42:32.000 1 2
2007-05-07 16:42:59.000 12 2
2007-05-07 16:42:59.000 12 2
2007-05-07 16:43:41.000 9 2
2007-05-07 16:43:41.000





Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida