Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Como creo esta consulta?

Estas en el tema de Como creo esta consulta? en el foro de SQL Server en Foros del Web. Amigos, tengo un problema con una cosulta sql haber si me pueden ayudar. El screen de la tabla , bueno les explico: 1.- Necesito que ...
  #1 (permalink)  
Antiguo 12/02/2009, 19:20
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Como creo esta consulta?

Amigos, tengo un problema con una cosulta sql haber si me pueden ayudar. El screen de la tabla, bueno les explico:

1.- Necesito que se muestre toda la info de una orden de fabricacion (NFABRICACION).
2.- Esta se filtra obiamente por el NFABRICACION.
3.- Si te fijas las columnas tienen NLINEA (numero de linea) y NUMERO (numero de item de la linea), lo que no puedo hacer es crear una query que muestre toda la info de la orden 15751, pero sin las lineas que tienen 2 items. O sea me tiene que mostrar solo las lineas 1 y 3 de la orden 1751.

Espero que me puedan ayudar, gracias.
  #2 (permalink)  
Antiguo 12/02/2009, 19:40
 
Fecha de Ingreso: febrero-2009
Ubicación: Buenos Aires
Mensajes: 42
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Como creo esta consulta?

La verdad que no soy de los que tienen experiencia en consultas. Sin embargo, no creo que exista una consulta que satisfaga tu pedido.

Pero tengo una idea: Hacé una consulta agrupando por linea obteniendo un campo que registre la suma de la cantidad de registros de cada agrupacion, y luego hacé una segunda consulta que llame a todos los que tienen el resultado de ese campo que creaste igual a 1.
  #3 (permalink)  
Antiguo 12/02/2009, 19:51
Avatar de sanchy  
Fecha de Ingreso: octubre-2008
Mensajes: 389
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Como creo esta consulta?

y no podes hacerlo con el lenguage en el q programas?

digo, traer "SELECT * FROM tabla WHERE nfabricacion=" 15751
eso se lo asignas a alguna variable. depende en q estes compilando. pero luego agarras esa variable y... vamos a decir q lo estas haciendo en php (aunque no conosco mucho)

$nfabric = 15751;
$result = mysql_query("SELECT * FROM tabla WHERE nfabricacion=" . $nfabric);

while ($row = mysql_fetch_array($result)) {
if ($row["numero"] = 1) {
echo $row;
}
}

no se si esta bien el codigo pero la idea...
osea, hacerlo con el lenguage de compilacion en vez de con la sentencia sql, me parece q es mucho mas facil
  #4 (permalink)  
Antiguo 12/02/2009, 19:54
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Como creo esta consulta?

Cita:
Iniciado por Lauferin Ver Mensaje
La verdad que no soy de los que tienen experiencia en consultas. Sin embargo, no creo que exista una consulta que satisfaga tu pedido.

Pero tengo una idea: Hacé una consulta agrupando por linea obteniendo un campo que registre la suma de la cantidad de registros de cada agrupacion, y luego hacé una segunda consulta que llame a todos los que tienen el resultado de ese campo que creaste igual a 1.
Lauferin, gracias por contestar pero no te entendi bien, me puedes explicar con mas detalle tu idea.
  #5 (permalink)  
Antiguo 12/02/2009, 19:57
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Como creo esta consulta?

Cita:
Iniciado por sanchy Ver Mensaje
y no podes hacerlo con el lenguage en el q programas?

digo, traer "SELECT * FROM tabla WHERE nfabricacion=" 15751
eso se lo asignas a alguna variable. depende en q estes compilando. pero luego agarras esa variable y... vamos a decir q lo estas haciendo en php (aunque no conosco mucho)

$nfabric = 15751;
$result = mysql_query("SELECT * FROM tabla WHERE nfabricacion=" . $nfabric);

while ($row = mysql_fetch_array($result)) {
if ($row["numero"] = 1) {
echo $row;
}
}

no se si esta bien el codigo pero la idea...
osea, hacerlo con el lenguage de compilacion en vez de con la sentencia sql, me parece q es mucho mas facil
Sanchy, gracias igual por contestar pero tampoco te entendi mucho tu sentencia, mira lo estoy haciendo en asp.net con c#, pero esta query es para mostrarla en un reportviewer asi que no creo que me sirva. Tienes alguna otra idea de como poder hacerlo.
  #6 (permalink)  
Antiguo 12/02/2009, 20:03
 
Fecha de Ingreso: febrero-2009
Ubicación: Buenos Aires
Mensajes: 42
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Como creo esta consulta?

Sí... la idea es la siguiente:

Haz una consulta trayendo todos los datos, agrupándolos (con el group by) por el segundo campo (me olvidé el nombre y ya no puedo acceder a la imagen que habías mandado, creo que era "linea"). En esa consulta, selecciona tambien la suma de cada agrupación (o sea, count(tabla.campo4) as cantidad). La idea es que el resultado de esta consulta te quede con estos resultados:

codigo linea cantidad
15751 1 1
15751 2 2
15751 3 1
.....

Luego almacenas esta consulta (como un stored procedure) y haces una segunda consulta llamando a los campos, WHERE CANTIDAD = 1

Espero que te ayude
  #7 (permalink)  
Antiguo 12/02/2009, 21:57
Avatar de sanchy  
Fecha de Ingreso: octubre-2008
Mensajes: 389
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Como creo esta consulta?

Cita:
Iniciado por BlueSkull Ver Mensaje
Sanchy, gracias igual por contestar pero tampoco te entendi mucho tu sentencia, mira lo estoy haciendo en asp.net con c#, pero esta query es para mostrarla en un reportviewer asi que no creo que me sirva. Tienes alguna otra idea de como poder hacerlo.
y en C# no tenes alguna clase que sirva de tabla? o una matriz no se.

le asignas los datos del select, y despues recorres la variable y vas pasando al reportviewer solo las filas q tienen numero de items 1 ... no se puede hacer eso?

ponele q en vb.net yo lo hago don dataTables y dataRows. y en php con arrays
  #8 (permalink)  
Antiguo 12/02/2009, 22:10
Avatar de sanchy  
Fecha de Ingreso: octubre-2008
Mensajes: 389
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Como creo esta consulta?

a la sentencia sql no se le puede pasar mas de una condicion?

por ejemplo, SELECT * FROM nombre_de_la_tabla WHERE nfabricacion=15751 AND numero<>2
? no se puede hacer eso

no se, te voy tirando cosas q se me ocurren para q pruebes.

pd: las lineas q te va a mostrar son la 1, la 2 y la 4
  #9 (permalink)  
Antiguo 13/02/2009, 07:44
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Como creo esta consulta?

No pasa nada con la consulta, por ejemplo como lo hago para identificar los registros (NLINEA) que estan repetidos para despues consultar los nlinea menos estos registros repetidos. Screen de la tabla.

Saludos.
  #10 (permalink)  
Antiguo 13/02/2009, 08:38
 
Fecha de Ingreso: junio-2008
Mensajes: 12
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como creo esta consulta?

lo que puedes hacer es hacer una consulta agregando ka cantidad de veces que se repite e insertarlas en una tabla, para luego consultar las que se repitan solo 1 , 2 , 3 .... cantidad de veces

quedaria algo asi:

select <campo>, conut (*) as veces
into cant_veces
from tabla
where <condicion>

luego haces una consulta uniendo las 2 tablas con la condicion de la cantidad de veces
  #11 (permalink)  
Antiguo 13/02/2009, 08:54
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Como creo esta consulta?

Cita:
Iniciado por calegria Ver Mensaje
lo que puedes hacer es hacer una consulta agregando ka cantidad de veces que se repite e insertarlas en una tabla, para luego consultar las que se repitan solo 1 , 2 , 3 .... cantidad de veces

quedaria algo asi:

select <campo>, conut (*) as veces
into cant_veces
from tabla
where <condicion>

luego haces una consulta uniendo las 2 tablas con la condicion de la cantidad de veces
CALEGRIA, gracias por contestar mira hasta ahora esta es la consulta que tengo

SELECT NFABRICACION, NLINEA
FROM METROS2
GROUP BY NFABRICACION, NLINEA
HAVING COUNT(*)>1

me arroja las nfabricacion y nlinea que se repiten, pero como hago una consulta que me arroje todas la nfabricacion + su n linea - las que me muestra la consulta anterior.
  #12 (permalink)  
Antiguo 13/02/2009, 11:05
 
Fecha de Ingreso: junio-2008
Mensajes: 12
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como creo esta consulta?

mira mete la consulta que tienes en una tabla digamos mi_tabla

luego haces una consulta con el not in

select nfabricate, nlinea
from <Tabla> // no recuerdo el nombre de tu tabla
where nfabricante not in (select nfabricante from mi_tabla)

espero que te sirva
  #13 (permalink)  
Antiguo 14/02/2009, 09:03
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Como creo esta consulta?

Saludos, oye pero si estoy utilizando un DataSet echo con el diseñador, no por codigo, como meto mi consulta en otra tabla? y si me dices como, aprovechamos y me explicas como accedo del TableAdapter que tengo a esa tabla recien creada.

Gracias.
  #14 (permalink)  
Antiguo 23/02/2009, 10:12
 
Fecha de Ingreso: junio-2008
Mensajes: 12
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como creo esta consulta?

mira las consultas que te di son desde sql.
para crear una tabla con los registros que seleccione tu consulta se pune into seguido por el nombre la tabla debajo despues del select antes del from.
si la consulta la quieres jalar desde programacion deberias eliminar la tabla creada despes de obtener el resultado con el comando drop table nombre de la tabla y la ultima consulta lo envias a tu data set
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:03.