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

agregar fila en base a una condicion

Estas en el tema de agregar fila en base a una condicion en el foro de SQL Server en Foros del Web. Hola a todos ! Como dice el titulo, necesito agregar una fila en base a una condición en una tabla SQL. ejemplo, tabla: ID Parte ...
  #1 (permalink)  
Antiguo 11/11/2016, 12:38
Avatar de BiPlanet  
Fecha de Ingreso: mayo-2007
Mensajes: 61
Antigüedad: 9 años, 11 meses
Puntos: 0
Pregunta agregar fila en base a una condicion

Hola a todos !

Como dice el titulo, necesito agregar una fila en base a una condición en una tabla SQL.

ejemplo, tabla:

ID Parte Marca

1 volante ford
1 asiento ford
1 puerta ford
1 llanta ford
1 cubierta ford

2 volante chevrolet
2 asiento chevrolet
2 puerta chevrolet
2 llanta chevrolet

3 volante toyota
3 asiento toyota
3 puerta toyota
3 llanta toyota
3 cubierta toyota

4 volante peugeot
4 asiento peugeot
4 puerta peugeot
4 llanta peugeot

5 volante renault
5 asiento renault
5 puerta renault


Lo que necesito es identificar a aquellos IDs que poseen llanta pero NO cubierta.
Los que poseen llanta y cubierta, no me interesan porque ya tienen las dos cosas.
los que no poseen ninguna de las dos cosas, tampoco me interesan.

Cosa que por ejemplo, en el ID 2 y 4 que poseen llanta pero no cubierta, agregarles la siguiente fila para que posean cubierta.

Desde ya muchas gracias !
  #2 (permalink)  
Antiguo 11/11/2016, 13:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 6.893
Antigüedad: 10 años, 8 meses
Puntos: 697
Respuesta: agregar fila en base a una condicion

Pero como agregar una fila? estaras hablando de agregar un registro a aquellos que cumplan con la condicion no? de ser asi quedaria:

Código SQL:
Ver original
  1. CREATE TABLE #temporal
  2. (
  3. id INT,
  4. parte nvarchar(20),
  5. marca nvarchar(20)
  6. )
  7.  
  8. INSERT INTO #temporal VALUES (1, 'volante','ford')
  9. INSERT INTO #temporal VALUES (1, 'asiento','ford')
  10. INSERT INTO #temporal VALUES (1, 'puerta','ford')
  11. INSERT INTO #temporal VALUES (1, 'llanta','ford')
  12. INSERT INTO #temporal VALUES (1, 'cubierta','ford')
  13.  
  14. INSERT INTO #temporal VALUES (2, 'volante','chevrolet')
  15. INSERT INTO #temporal VALUES (2, 'asiento','chevrolet')
  16. INSERT INTO #temporal VALUES (2, 'puerta','chevrolet')
  17. INSERT INTO #temporal VALUES (2, 'llanta','chevrolet')
  18.  
  19. INSERT INTO #temporal VALUES (3, 'volante','toyota')
  20. INSERT INTO #temporal VALUES (3, 'asiento','toyota')
  21. INSERT INTO #temporal VALUES (3, 'puerta','toyota')
  22. INSERT INTO #temporal VALUES (3, 'llanta','toyota')
  23. INSERT INTO #temporal VALUES (3, 'cubierta','toyota')
  24.  
  25. INSERT INTO #temporal VALUES (4, 'volante','peugeot')
  26. INSERT INTO #temporal VALUES (4, 'asiento','peugeot')
  27. INSERT INTO #temporal VALUES (4, 'puerta','peugeot')
  28. INSERT INTO #temporal VALUES (4, 'llanta',' peugeot')
  29.  
  30. --Hacemos el insert a la tabla
  31. INSERT INTO #temporal
  32. --seleccionamos los datos necesarios para agregar la fila
  33. SELECT id, 'cubierta', marca  FROM(
  34. --con el resultado de la sumatoria sabemos que registros son los que necesitamos
  35. SELECT CASE WHEN t_llanta=1 AND t_cubierta=0 THEN 1 ELSE 0 END AS ultimo, id, marca FROM(
  36. hacemos una sumatoria para saber cuales registros tienen llanta y no tienen cubierta
  37. SELECT SUM(llanta) AS t_llanta, SUM(cubierta) AS t_cubierta, id, marca FROM(
  38. --obtenemos cuales registros tienen llanta o cubierta
  39. SELECT CASE WHEN parte='llanta' THEN 1 ELSE 0 END AS llanta,
  40. CASE WHEN parte='cubierta' THEN 1 ELSE 0 END AS cubierta, id, marca
  41. FROM #temporal
  42. ) AS t1 GROUP BY id, marca
  43. ) AS total
  44. ) AS ultimo WHERE ultimo=1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 11/11/2016, 13:58
Avatar de BiPlanet  
Fecha de Ingreso: mayo-2007
Mensajes: 61
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: agregar fila en base a una condicion

Muchas gracias por su tiempo y por responder.
Si, me mal exprese, es agregar un registro.

Para hacerla mas simple, necesito identificar únicamente a los que poseen llanta, sin importar si tienen o no cubierta.

A esos, agregarles el registro cubierta, repito, sin importar si ya poseen cubierta o no. siempre y cuando tengan llanta.

Código:
USE [base_de_datos]
    GO
		 SELECT id FROM tabla WHERE parte = llanta 
			// aca es donde necesito agregar el registro, a esos IDs que poseen llanta
		
	GO
  #4 (permalink)  
Antiguo 11/11/2016, 14:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 6.893
Antigüedad: 10 años, 8 meses
Puntos: 697
Respuesta: agregar fila en base a una condicion

Cita:
Iniciado por BiPlanet Ver Mensaje
A esos, agregarles el registro cubierta, repito, sin importar si ya poseen cubierta o no. siempre y cuando tengan llanta.
Decidete aqui dices que tienes que agregar cubierta sin importar si ya la poseen o no, en el codigo que te di se agrega llanta cuando no tienen cubierta que era la condicion inicial.


ahora para ti que es agregarles un registro? insertar un nuevo registro a la tabla? si es asi ahi tienes el codigo que te pase.

Probaste el codigo que te pase???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me



La zona horaria es GMT -6. Ahora son las 20:22.