Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - rubentexas

#3
Bases de Datos / Re: Ayuda Inner Join 3 tablas
13 Septiembre 2017, 23:57 PM
Aunque el resultado puede ser el mismo, utiliza la respuesta de ivancea96

El plan de ejecucion cuando la tabla crezca sera mucho mejor.

Preferi SIEMPRE JOIN sobre cruce cartesiando (dejando el segundo para casos muy exclusivos)
#4
Bases de Datos / Re: UPDATE mitad de VARBINARY?
13 Septiembre 2017, 23:53 PM
1. Converti y varbinary a varchar y luego con STUFF le editas solo los primeros caracteres-

Stuff se utiliza para un replace de un substring.

es decir suponiendo que tengas @dato='123456' y le pones stuff(@dato,1,3,'abc') devolveria abc456

#5
no, no hay manera.

Una le dice al motor que busque datos y otra que borre ... y encima de dos entidades diferentes...
Quizas si explicas mas tu idea algo se puede inventar... seguramente dentro de un SP.
#6
te falto el SUM


SELECT  /* NO "select * "si usas asi no el group no funcionara como queres.*/
SUMA.[U_CTS_Tienda], SUMA.SLPNAME,SUMA.[U_CTS_Cedula],SUMA.U_CTS_Vendedor,SUMA.[U_CTS_Cargo],SUMA.[U_bgn_grupoarticulo],SUM(SUMA.CANTIDAD), SUM(SUMA.TOTAL) /*fijate que puse SUM(campo) esta es la funcion que realmente sumara.*/
FROM

(

SELECT T0.U_CTS_Vendedor, T5.[U_CTS_Cedula],T5.[U_CTS_Tienda],T5.[U_CTS_Cargo],T5.SLPNAME, T1.[U_bgn_grupoarticulo], SUM(T1.[Quantity]) AS CANTIDAD, SUM(T1.[LineTotal]) AS TOTAL FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode LEFT JOIN OSLP T5 ON T5.U_CTS_VENDEDORPOS = T0.U_CTS_Vendedor
WHERE ( T0.[DocDate] >= '2017-09-01' OR '2017-09-01'=' ') and (T0.[DocDate] <= '2017-09-01' OR '2017-09-01'=' ')
GROUP BY T5.[U_CTS_Tienda], T5.SLPNAME,T5.[U_CTS_Cedula],T0.U_CTS_Vendedor,T5.[U_CTS_Cargo],T1.[U_bgn_grupoarticulo]

UNION ALL
SELECT T0.U_CTS_Vendedor,T5.[U_CTS_Cedula],T5.[U_CTS_Tienda],T5.[U_CTS_Cargo], T5.SLPNAME, T1.[U_bgn_grupoarticulo],SUM((T1.[Quantity]*(-1))) AS CANTIDAD, SUM((T1.[LineTotal]*(-1))) AS TOTAL FROM ORIN T0 INNER JOIN RIN1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode LEFT JOIN OSLP T5 ON T5.U_CTS_VENDEDORPOS = T0.U_CTS_Vendedor
WHERE ( T0.[DocDate] >= '2017-09-01' OR '2017-09-01'=' ') and (T0.[DocDate] <= '2017-09-01' OR '2017-09-01'=' ')
GROUP BY T5.[U_CTS_Tienda], T5.SLPNAME,T5.[U_CTS_Cedula],T0.U_CTS_Vendedor,T5.[U_CTS_Cargo],T1.[U_bgn_grupoarticulo]

) AS SUMA

GROUP BY SUMA.[U_CTS_Tienda], SUMA.SLPNAME,SUMA.[U_CTS_Cedula],SUMA.U_CTS_Vendedor,SUMA.[U_CTS_Cargo],SUMA.[U_bgn_grupoarticulo] /* de aca sacas los campos que tienen funcion y pones la funcion en el select*/
#7
Estas tratando de usar el having como en otro SQL, (me parece que mysql).
En SQL lo que estas tratando de hacer no necesita HAVING, solo un WHERE.

No tenes ninguna funcion de agregado en el SELECT, para que poner el GROUP??
*funcion de agregado seria SUM / COUNT / AVG / MAX / MIN ....

la idea del having con el group seria algo asi como el WHERE del GROUP, tambien se puede usar sin el GROUP, pero al poner el GROUP, TODOS los campos que no sean funcion de agregado deben estar en el group, en tu caso serian todos los del select, por eso carece de logica.

proba asi:

SELECT     Nombre_Proyecto, Cantidad, Id_Tipo_Hallazgo, Nombre_Tipo_Hallazgo, ProyectoActivo, ID_Proyecto, Nombre_Tipo_Falla, Id_Filial, Fecha_Apertura
FROM         dbo.vis_UiInf_Ranking_Hallazgos_TipoFalla
WHERE     MONTH(Fecha_Apertura) = 4 AND Id_Filial = 9

#8
podrias crear una vista con los dos select unidos y finalmente agrupar el resultado para que de los 20.

SELECT *
FROM

(

SELECT T0.U_CTS_Vendedor, T5.[U_CTS_Cedula],T5.[U_CTS_Tienda],T5.[U_CTS_Cargo],T5.SLPNAME, T1.[U_bgn_grupoarticulo], SUM(T1.[Quantity]) AS CANTIDAD, SUM(T1.[LineTotal]) AS TOTAL FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode LEFT JOIN OSLP T5 ON T5.U_CTS_VENDEDORPOS = T0.U_CTS_Vendedor
WHERE ( T0.[DocDate] >= '2017-09-01' OR '2017-09-01'=' ') and (T0.[DocDate] <= '2017-09-01' OR '2017-09-01'=' ')
GROUP BY T5.[U_CTS_Tienda], T5.SLPNAME,T5.[U_CTS_Cedula],T0.U_CTS_Vendedor,T5.[U_CTS_Cargo],T1.[U_bgn_grupoarticulo]

UNION ALL
SELECT T0.U_CTS_Vendedor,T5.[U_CTS_Cedula],T5.[U_CTS_Tienda],T5.[U_CTS_Cargo], T5.SLPNAME, T1.[U_bgn_grupoarticulo],SUM((T1.[Quantity]*(-1))) AS CANTIDAD, SUM((T1.[LineTotal]*(-1))) AS TOTAL FROM ORIN T0 INNER JOIN RIN1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode LEFT JOIN OSLP T5 ON T5.U_CTS_VENDEDORPOS = T0.U_CTS_Vendedor
WHERE ( T0.[DocDate] >= '2017-09-01' OR '2017-09-01'=' ') and (T0.[DocDate] <= '2017-09-01' OR '2017-09-01'=' ')
GROUP BY T5.[U_CTS_Tienda], T5.SLPNAME,T5.[U_CTS_Cedula],T0.U_CTS_Vendedor,T5.[U_CTS_Cargo],T1.[U_bgn_grupoarticulo]

) AS EL_PARENTESIS

te falta el alias de la tabla que estas simulando con los parentesis.

Esto te dara de nuevo 2 lineas, PERO finalmente pones de nuevo el GROUP y sale OK.

lo mas simple cuando hago esto es ver el select como sale y luego poner los parentesis, el alias y agrupar por los nombres de los campos que salen de ese select.
GROUP BY U_CTS_Tienda,SLPNAME,U_CTS_Cedula,U_CTS_Vendedor,U_CTS_Cargo,U_bgn_grupoarticulo
Recorda que el select afuera del parentesis ahora tendran el alias "EL_PARENTESIS" que le puse a proposito para mostrar el bug.

#9
Desarrollo Web / Re: [HTML] Problema con formulario.
13 Septiembre 2017, 02:31 AM
ante todo, buenas noches.
soy totalmente nuevo en el sitio, pase para buscar algo y me apiade del mensaje.

Bien te respondieron arriba tu codigo HTML esta OK.

como te pusieron arriba tambien este codigo esta pensado para que al apretar el boton abra tu CLIENTE DE CORREO (soft) de mensajeria por defecto y en el PARA: ponga tu mail, nada mas :)

Si efectivamente tenes el cliente de correo instalado, deberias volver a registrarlo como default en la configuracion de windows o los navegadores que uses. te dejo este link para ayudarte, https://www.msoutlook.info/question/mailto-links-do-not-open-outlook

Si por otro lado vos quisieras que la pagina envie el mail sin que el usuario tenga un programa instalado... deberias utilizar algunas funciones del lado del server, segun el lenguaje de programacion que uses...
yo escribo paginas en el viejo ASP y uso la libreria CDONTS, o el SQL mail cuando tengo que interactuar con una base de datos, segurametne para PHP habra alguna similar, java tambien...

Es cosa de googlear.

Y en caso de preguntar, ser algo mas especifico en lo que uno espera lograr con el codigo.