Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: nico56 en 24 Diciembre 2009, 18:46 pm



Título: Tablas relacionadas en sql , duda
Publicado por: nico56 en 24 Diciembre 2009, 18:46 pm
Hola, estoy practicando con este lenguaje pero no me anda el "AUTO_INCREMENT", me da error en la linea marcada.

Código:
CREATE TABLE clientes
(
     id_cliente int NOT NULL AUTO_INCREMENT PRIMARY KEY, /*Aqui me da error*/
     nombre text NOT NULL
     
     
)

CREATE TABLE articulos
(
    id_articulo int NOT NULL PRIMARY KEY,
    nombre text NOT NULL
   
)

CREATE TABLE ventas
(
    id_venta int NOT NULL PRIMARY KEY,
    id_cliente int NOT NULL FOREIGN KEY(id_cliente)  REFERENCES clientes(id_cliente),
    cantidad int NOT NULL, /*La cantidad de unidades de ese articulo*/
    id_articulo int NOT NULL FOREIGN KEY (id_articulo) REFERENCES articulos(id_articulo),
    precio_unitario real NOT NULL,
    precio_total real NOT NULL
 
)

Otra duda, en caso de que anduviera en auto increment, al realizar el inserte solo se le pasa un parametro a la parte de values ?


Título: Re: Tablas relacionadas en sql , duda
Publicado por: Shell Root en 24 Diciembre 2009, 20:35 pm
Intentá Así:
SQL Server 2008
Código:
CREATE TABLE dbo.Clientes (
[Id_Cliente] [Int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[Nombre] [Text] NOT NULL
)
GO

Otra duda, en caso de que anduviera en auto increment, al realizar el inserte solo se le pasa un parametro a la parte de values ?
Simon! Cuando es un Identity, No es necesario pasarle un valor dentro del INSERT, En esté caso solo le pasas el valor de Nombre... :D

Saludos!


Título: Re: Tablas relacionadas en sql , duda
Publicado por: nico56 en 24 Diciembre 2009, 21:58 pm
Perfecto, muschas gracias pero sabes si se pueden poner expresiones aritmeticas dentro del "INSERT", por ejemplo el campo de la tabla ventas llamado "precio_total", es la multiplicacion del campo "cantidad" y "precio_unitario", eso se especifica en la tabla o en el "INSERT" ?


Título: Re: Tablas relacionadas en sql , duda
Publicado por: Shell Root en 24 Diciembre 2009, 22:23 pm
Para eso Crearemos un Store Procedure, aunque tambien se puede crear dentro de un SELECT o INSERT o lo que sea, solo que me gustan más los Store Procedure. Por Ejemplo:

Tabla: TblProcesos (Tabla donde se almacena los resultados de Suma, Resta, Multiplicación y División)
Código:
CREATE TABLE [dbo].[TblProcesos](
[Id] [int] NOT NULL PRIMARY KEY,
[Suma] [varchar](50) NOT NULL,
[Resta] [varchar](50) NOT NULL,
[Multiplicacion] [varchar](50) NOT NULL,
[Division] [varchar](50) NOT NULL
)

Store Procedure: StProcesos (Procedimiento Almacenado para realizar las operacion y la insercion dentro de la tabla de TblProcesos)
Código:
-- =============================================
-- Author: < Shell Root >
-- Create date: < 24/12/2009 >
-- Description: < Procesos e Inserción >
-- =============================================
CREATE PROCEDURE StProcesos(
-- Parametros
@Numero1 AS INT,
@Numero2 AS INT
)
AS
BEGIN
SET NOCOUNT ON;

-- Variables
DECLARE @Suma AS INT
DECLARE @Resta AS INT
DECLARE @Multiplicacion AS INT
DECLARE @Division AS INT

-- Procesos
SET @Suma = @Numero1 + @Numero2
SET @Resta = @Numero1 - @Numero2
SET @Multiplicacion = @Numero1 * @Numero2
SET @Division = @Numero1 / @Numero2

-- Inserción
INSERT INTO TblProcesos(Suma, Resta, Multiplicacion, Division)
VALUES (@Suma,@Resta,@Multiplicacion,@Division)
END
GO

Ejecución:
Código:
EXEC dbo.StProcesos 3,1

Resultado:
Código:
1	4	2	3	3
NULL NULL NULL NULL NULL

Saludos!


Título: Re: Tablas relacionadas en sql , duda
Publicado por: nico56 en 25 Diciembre 2009, 01:40 am
MMM la verdad que no entendi, podrias ponerlo como se hace en el insert? Yo imaginaba algo mas simple como esto por ejemplo:

Código:
insert into ventas values (1,1,5,1,45.90,45.90*5)


Título: Re: Tablas relacionadas en sql , duda
Publicado por: Shell Root en 25 Diciembre 2009, 19:21 pm
MMM la verdad que no entendi, podrias ponerlo como se hace en el insert? Yo imaginaba algo mas simple como esto por ejemplo:

Código:
insert into ventas values (1,1,5,1,45.90,45.90*5)

Claro, es simple.
Insert:
Código:
INSERT INTO TblProcesos (Suma, Resta, Multiplicacion, Division)
VALUES (10 + 2, 2 - 1, 2 * 2, 6 / 2)

Resultado:
Código:
2	12	1	4	3

Saludos!