Foro oficial de SQL

Buenas noches para todos, de nuevo yo por aqui molestandolos.

Se que este es el foro de SQL, pero asi mismo se que hay mucha gente que tiene logica en esto de las bases de datos, logica que veo me hace falta porque hoy heché cabeza todo el dia para hacer lo que esta en el titulo de esta pregunta.

Estoy trabajando en Access 2007, pero pues es por especificar, ya que pues me parece que "basicamente" es lo mismo, es lenguaje SQL.

Resulta que estoy haciendo un programa en C# para llevar los pagos de las pensiones de los alumnos, pero hay alumnos que pagan tambien restaurante y ruta, entonces hice una tabla asi:

PagoFecha: fecha
PagoAlumno: foreignkey apuntando al ID del alumno
PagoPension: bool (porque se paga o no se paga)
PagoRestaurante: bool
PagoRuta: bool

¿estoy haciendolo bien? pero pues bueno, el pago lo puedo hacer, y todo bien, pero, ¿y si pasa marzo y el alumno no ha pagado? ahi ya hay mora de un 10% digamos, pero, ¿como hago para que mi programa detecte que hay mora?

gracias por la ayuda muchachos.

Bueno yo lo analice así

Deberias crearte un archivo independiente en el que se especifiquen las fechas limites de pago por mes, es decir para el mes de enero del 2009 la fecha limite de pago seria 2009-02-15.

Entonces cada pago que realice un estudiante se debe comprar con el mes que esta pagando se recupera la fecha limite del pago del mes ejemplo 2009-02-15 y se compara contra la fecha del recibo de pago del estudiante ahí tienes tus días de mora y lo que se paso del pago.

En el segundo archivo que es donde almacenas el recibo de pago coloca como llave primaria el número de factura y la identificación del estudiante.

Espero te ayude mi respuesta.
 
Muchachos tengo una duda,

Estoy viendo bases de datos en my sql en la universidad y me dejaron un ejercicio, crear una tabla de un grupo de estudiantes con diferentes atributos. El problema es que despues de creada y de llenarla, me toca descomponer el nombre de cada estudiante en primer nombre, segundo nombre, primer apellido, segundo apellido.

Mi pregunta es: despues de crear los campos primer nombre, segundo nombre, y demás, com ohago para obetener solo el primer nombre, segundo y los apellidos del campo nombre, es decir para actualizar los campos con UPDATE pero solo tomando una parte especifica de la cadena nombre.



Les agradezco por su colaboracion
 
Muchachos tengo una duda,

Estoy viendo bases de datos en my sql en la universidad y me dejaron un ejercicio, crear una tabla de un grupo de estudiantes con diferentes atributos. El problema es que despues de creada y de llenarla, me toca descomponer el nombre de cada estudiante en primer nombre, segundo nombre, primer apellido, segundo apellido.

Mi pregunta es: despues de crear los campos primer nombre, segundo nombre, y demás, com ohago para obetener solo el primer nombre, segundo y los apellidos del campo nombre, es decir para actualizar los campos con UPDATE pero solo tomando una parte especifica de la cadena nombre.



Les agradezco por su colaboracion


http://www.mysqlya.com.ar/temarios/descripcion.php?cod=75&punto=25

utilizar Google is THX
 
Muchas gracias, el software seria para una farmacia (creo que en colombia le dice drogueria) ... desde que tenga los datos a mano los expongo para ver como puedo desarrollar la base de datos y aplicar los constraints, triggers, etc., correspondientes.... relamente lo que quiero es hacerla y que entre todos vean los avances y me corrijan donde tenga puntos debiles ;)


Gracias anticipada


SuerteX :)

No siempre es necesario hacerle "todos los jueguetes" a las bases de datos, conque estén bien construidas basta, no es tan importante los constrain, triggers, llaves y demás accesorios, cuando lo tenga definido lo expone y se le ayuda.
Saludos
 
No siempre es necesario hacerle "todos los jueguetes" a las bases de datos, conque estén bien construidas basta, no es tan importante los constrain, triggers, llaves y demás accesorios, cuando lo tenga definido lo expone y se le ayuda.
Saludos

Recuerda que habra un sistema de facturacion y/o notas de credito... en este caso como seria recomendable hacer las transacciones, desde la base de datos o desde el programa? :rolleyes:, no sera un programa gigantesco, pero me gustaria hacerlo lo mas optimo posible



SuerteX & Tnx :)
 
Por que no te "dibujas" las entidades (tablas,atributos) , bueno asi les digo yo... y entre todos las corregimos...

Si kieres pasalas por MP para un proyecto mas privado :)
 
No, man las tablas y relaciones desde que las tenga les subo un screen del diagrama, solo me faltaria los respectivos triggers para que se hicieran los descuentos o se sumen a la DB cuando se facture, se le de entrada a un articulo y se haga un nota de credito... vere que tan rapido puede obtener los datos... y ver como funciona el sistema actual...


Lo que si me dijeron que desean es ver un repoderte de lo vendido en el dia, o sea, con los detalles y cantidades de productos vendidos en el dia (creo que por el momento no lleva modulo de contabilidad, solo de facturacion y entrada de productos, eso facilitara muchisimo las cosas) y creo que eso se podria hacer muy facil, solo un detalle de una vista de la venta resumida de los productos para saber de cuales hacer los pedidos antes de que se agote el stock ....

Esto mas o menos es un preview de lo que quieren ... veré si el sabado coordino con la persona para con lapiz y papel tomo nota de todo lo que deseea y si me permite una copia del sistema actual a ver que tan funciona ..... para ir trabajando con el e irle mostrando el progreso y asi que este pida lo que realmente desea y sea funcional :D

SuerteX :)
 
No siempre es necesario hacerle "todos los jueguetes" a las bases de datos, conque estén bien construidas basta, no es tan importante los constrain, triggers, llaves y demás accesorios, cuando lo tenga definido lo expone y se le ayuda.
Saludos

Hay que saber distribuir la carga, las bases de datos de hoy en día no son solo para guardad datos.........
 
Gracias a Dios por permitir las "Consultas o Vistas"... como bajan peso en la programacion... una base de datos hay que explotarla... pero de alli a hacer triggers pa actualizar un campo no me parece funcional
 
Gracias a Dios por permitir las "Consultas o Vistas"... como bajan peso en la programacion... una base de datos hay que explotarla... pero de alli a hacer triggers pa actualizar un campo no me parece funcional


Tnx por la recomendacion .... tonces me recomiendas hacer todo el proceso de descargar el inventario desde el programa??


Por cierto ... alguien que me explique los JOIN de manera llana, ya que todo lo que veo en manuales y libros son teoria muy compleja y eso me enrreda la cabeza, ya que soy muy practico :muerto:


SuerteX :(
 
Join son las "entradas" de una tabla en otra... es como crear la relacion en SQL...

Virutero.. yo diseñe hace poco un sistema de Pos Online, con descarga de inventario en linea... solo cree Llaves Primarias y Vistas , para tu Drogueria, lo importante es manejar el "FIFO" en el inventario por la cuestion de los vencimientos... entre mis cosas tengo una idea de como manejarlas...

dejame la busco y te la paso...
 
Join son las "entradas" de una tabla en otra... es como crear la relacion en SQL...

Virutero.. yo diseñe hace poco un sistema de Pos Online, con descarga de inventario en linea... solo cree Llaves Primarias y Vistas , para tu Drogueria, lo importante es manejar el "FIFO" en el inventario por la cuestion de los vencimientos... entre mis cosas tengo una idea de como manejarlas...

dejame la busco y te la paso...

Mmmm... que interesante man.. ... en este caso seria un aplicacion windows, pero seria practicamente lo mismo :D, pero aun tengo una duda de que usar como clave primaria :S.... ¿Tu usaste lector de codigo de barras o algo asi? :rolleyes:


Ya tengo algo sobre los JOIN

OUTER JOIN: Cuando se realiza una composición o combinación de tablas estableciendo una determinada relación entre
sus columnas, puede ocurrir que no se emparejen todas las filas que debieran por faltar correspondencia
entre algunas de ellas. Esto se debe a que existen filas en alguna tabla que no tienen correspondencia en
la otra tabla y al aplicar la condición de selección de la composición no se seleccionarán.

FROM NombreTabla [AliasTabla]
{LEFT|RIGHT [OUTER] JOIN NombreTabla [AliasTabla].....]
ON CondicionComposicion


LEFT|RIGHT [OUTER] JOIN: indica que es un join externo y si la extensión del producto de las tablas se quiere realizar por la izquierda o por la derecha.

CondicionComposicion: es la misma condición de composición en lugar de en la cláusula WHERE.

LEFT JOIN: join donde se obtienen todas las filas de la tabla de la izquierda, aunque no tenga correspondencia en la tabla de la derecha.

Realiza el producto cartesiano de las tablas que se le indican, aplica la condición de composición (expresada en la cláusula ON) al resultado de este producto cartesiano y añade, por cada fila de la tabla de la izquierda que no tenga correspondencia en la tabla de la derecha, una fila con los valores de la tabla de la izquierda y en la tabla de la derecha valores NULL en todas las columnas.

RIGHT JOIN: join donde se obtienen todas las filas de la tabla de la derecha, aunque no tengan correspondencia en la tabla de la izquierda.

Realiza el producto cartesiano de las tablas que se le indican, aplica la condición de composición (expresada en la cláusula ON) al resultado de este producto cartesiano y añade, por cada fila de la tabla de la derecha que no tenga correspondencia en la tabla de la izquierda, una fila con los valores de la tabla de la derecha y en la tabla de la izquierda valores NULL en todas las columnas.

Este es el caso de los OUTER, y en caso de los INNER JOIN como seria y cual serian los resultados?? :rolleyes:


SuerteX :)
 
Claro Virutero... El lector es ESENCIAL, el ingreso de los medicamentos es mas facil, asi como las busquedas para la posterior facturacion...

El lio de es cuando vendes consas que no tiene codigo de barra ("pañales para bebes") por unida.. :S
pero le buscas la "comba al palo"... ;)

Hablando de Activadores

La tabla a tiene tres campos
CampoA1, CampoA2, CampoA3

La tabla b tiene 2 Campos
CampoB1 , CampoB2

Necesito un trigger despues de modificar el CampoA3, para que elimine de la Tabla B el Registro que Tenga en CampoB1 el valor que hay en CampoA1...

Es posible esto :S:S
 
le buscas la "comba al palo"... ;)

Eso se llama codificacion. .......... (De productos)

Hablando de Activadores

La tabla a tiene tres campos
CampoA1, CampoA2, CampoA3

La tabla b tiene 2 Campos
CampoB1 , CampoB2

Necesito un trigger despues de modificar el CampoA3, para que elimine de la Tabla B el Registro que Tenga en CampoB1 el valor que hay en CampoA1...

Es posible esto :S:S

"AFTER UPDATE" + Google
 
Para quienes quieran practiar, aprender o reforzar conocimientos en SQL Server y/o MySQL:

- Manual SQL

Este Query lo prepare para que funcione en SQL Server, pero se adapta muyyy facilmente para MySQL

Crear la base de Datos
PHP:
--#' ###################CREACION DE LA BASE DE DATOS#######################
Use Master
CREATE DATABASE Curso
ON PRIMARY
(
	NAME = 'Curso',
	FILENAME = 'C:\DataBase\Curso.Mdf'
	--Quien quiera cambiar la ruta del archivo fisico solo tiene que cambiar la ruta "C:\DataBase\"
)
GO

Crear las tablas de la Base de Datos

PHP:
--#' ######################## CREACION DE TABLAS #######################
USE Curso
--#' ## TABLA DEPARTAMENTOS
CREATE TABLE DEPARTAMENTOS
( DEP_NO 		INT,
  DNOMBRE 		VARCHAR(14),
  LOCALIDAD 	VARCHAR(10),
  CONSTRAINT PK_DEPARTAMENTOS_DEP_NO PRIMARY KEY (DEP_NO)
)

--### TABLA EMPLEADOS
CREATE TABLE EMPLEADOS
( EMP_NO 		INT,
  APELLIDO 		VARCHAR(8),
  OFICIO 		VARCHAR(10),
  DIRECTOR 		INT,
  FECHA_ALTA 	DATETIME,
  SALARIO 		MONEY,
  COMISION 		MONEY,
  DEP_NO 		INT,
  CONSTRAINT PK_EMPLEADOS_EMP_NO PRIMARY KEY (EMP_NO),
  CONSTRAINT FK_EMP_DIRECTOR FOREIGN KEY (DIRECTOR)
  REFERENCES EMPLEADOS(EMP_NO),
  CONSTRAINT FK_EMP_DEP_NO FOREIGN KEY (DEP_NO)
  REFERENCES DEPARTAMENTOS(DEP_NO)
)

--### TABLA CLIENTES

CREATE TABLE CLIENTES
( CLIENTE_NO		INT,
  NOMBRE 			VARCHAR(25),
  LOCALIDAD			VARCHAR(14),
  VENDEDOR_NO		INT,
  DEBE				MONEY,
  HABER				MONEY,
  LIMITE_CREDITO    MONEY,
  CONSTRAINT PK_CLIENTE_NO PRIMARY KEY(CLIENTE_NO),
  CONSTRAINT FK_CLI_EMP_NO FOREIGN KEY (VENDEDOR_NO)
  REFERENCES EMPLEADOS(EMP_NO) ON DELETE CASCADE
)

--### TABLA PRODUCTOS

CREATE TABLE PRODUCTOS
( PRODUCTO_NO  		INT,
  DESCRIPCION  		VARCHAR(30),
  PRECIO_ACTUAL 	MONEY,
  STOCK_DISPONIBLE	INT,
  CONSTRAINT PK_PRODUCTO_NO PRIMARY KEY (PRODUCTO_NO) 
)

--### TABLA PEDIDOS
CREATE TABLE PEDIDOS
( PEDIDO_NO         INT,
  PRODUCTO_NO		INT,
  CLIENTE_NO 		INT,
  UNIDADES 	        INT,
  FECHA_PEDIDO      DATETIME,
  CONSTRAINT PK_PEDIDO_NO PRIMARY KEY (PEDIDO_NO),
  CONSTRAINT FK_PEDIDOS_PRODUCTO_NO FOREIGN KEY (PRODUCTO_NO)
		REFERENCES PRODUCTOS(PRODUCTO_NO) ON DELETE CASCADE,
  CONSTRAINT FK_PEDIDOS_CLIENTE_NO FOREIGN KEY (CLIENTE_NO)
		REFERENCES CLIENTES(CLIENTE_NO) ON DELETE CASCADE 
)
GO

Insertar los Datos con los cuales practicaremos

PHP:
--### PRODUCTOS
INSERT INTO PRODUCTOS VALUES (10, 'MESA DESPACHO MOD. GAVIOTA',  550,  50);
INSERT INTO PRODUCTOS VALUES (20, 'SILLA DIRECTOR MOD. BUFALO',  670,  25);
INSERT INTO PRODUCTOS VALUES (30, 'ARMARIO NOGAL DOS PUERTAS',   460,  20);
INSERT INTO PRODUCTOS VALUES (40, 'MESA MODELO UNION',		     340,  15);
INSERT INTO PRODUCTOS VALUES (50, 'ARCHIVADOR CEREZO',		     1050, 20);
INSERT INTO PRODUCTOS VALUES (60, 'CAJA SEGURIDAD MOD B222',     280,  15);
INSERT INTO PRODUCTOS VALUES (70, 'DESTRUCTORA DE PAPEL A3',	 450,  25);
INSERT INTO PRODUCTOS VALUES (80, 'MODULO ORDENADOR MOD. ERGOS', 550,  25);
GO

--### DEPARTAMENTOS
INSERT INTO DEPARTAMENTOS VALUES(10, 'CONTABILIDAD', 'BARCELONA');
INSERT INTO DEPARTAMENTOS VALUES(20, 'INVESTIGACION', 'VALENCIA');
INSERT INTO DEPARTAMENTOS VALUES(30, 'VENTAS',        'MADRID'); 
INSERT INTO DEPARTAMENTOS VALUES(40, 'PRODUCCION',    'SEVILLA');
GO

--### EMPLEADOS
INSERT INTO EMPLEADOS VALUES (7839,'REY',     'PRESIDENTE',NULL,'17/11/1981',6000,    NULL,10);
INSERT INTO EMPLEADOS VALUES (7698,'GARRIDO', 'DIRECTOR',  7839,'01/05/1981',3850.12, NULL, 30);
INSERT INTO EMPLEADOS VALUES (7782,'MARTINEZ','DIRECTOR',  7839,'09/06/1981',2450,    NULL,10);
INSERT INTO EMPLEADOS VALUES (7499,'ALONSO',  'VENDEDOR',  7698,'23/02/1981',1400,    400,30);
INSERT INTO EMPLEADOS VALUES (7521,'LOPEZ',   'EMPLEADO',  7782,'08/05/1981',1350.50, NULL,10);      
INSERT INTO EMPLEADOS VALUES (7654,'MARTIN',  'VENDEDOR',  7698,'28/09/1981',1500,    1600, 30);
INSERT INTO EMPLEADOS VALUES (7844,'CALVO',   'VENDEDOR',  7698,'08/09/1981',1800,    0,30);
INSERT INTO EMPLEADOS VALUES (7876,'GIL',     'ANALISTA',  7782,'06/05/1982',3350,    NULL, 20);
INSERT INTO EMPLEADOS VALUES (7900,'JIMENEZ', 'EMPLEADO',  7782,'24/03/1983',1400,    NULL,20);
GO

--### CLIENTES
INSERT INTO CLIENTES VALUES (101, 'DISTRIBUCIONES GOMEZ',    'MADRID',    7499, 0, 0, 5000);
INSERT INTO CLIENTES VALUES (102, 'LOGITRONICA S.L',	     'BARCELONA', 7654, 0, 0, 5000);
INSERT INTO CLIENTES VALUES (103, 'INDUSTRIAS LACTEAS S.A.', 'LAS ROZAS', 7844, 0, 0, 10000);
INSERT INTO CLIENTES VALUES (104, 'TALLERES ESTESO S.A.',    'SEVILLA',   7654, 0, 0, 5000);
INSERT INTO CLIENTES VALUES (105, 'EDICIONES SANZ',			 'BARCELONA', 7499, 0, 0, 5000);
INSERT INTO CLIENTES VALUES (106, 'SIGNOLOGIC S.A.',		 'MADRID',    7654, 0, 0, 5000);
INSERT INTO CLIENTES VALUES (107, 'MARTIN Y ASOCIADOS S.L.', 'ARAVACA' ,  7844, 0, 0, 10000);
INSERT INTO CLIENTES VALUES (108, 'MANUFACTURAS ALI S.A.',   'SEVILLA',   7654, 0, 0, 5000);
GO

--### PEDIDOS
INSERT INTO PEDIDOS VALUES(1000, 20, 103, 3, '06/10/1999');
INSERT INTO PEDIDOS VALUES(1001, 50, 106, 2, '06/10/1999');
INSERT INTO PEDIDOS VALUES(1002, 10, 101, 4, '07/10/1999');
INSERT INTO PEDIDOS VALUES(1003, 20, 105, 4, '16/10/1999');
INSERT INTO PEDIDOS VALUES(1004, 40, 106, 8, '20/10/1999');
INSERT INTO PEDIDOS VALUES(1005, 30, 105, 2, '20/10/1999');
INSERT INTO PEDIDOS VALUES(1006, 70, 103, 3, '03/11/1999');
INSERT INTO PEDIDOS VALUES(1007, 50, 101, 2, '06/11/1999');
INSERT INTO PEDIDOS VALUES(1008, 10, 106, 6, '16/11/1999');
INSERT INTO PEDIDOS VALUES(1009, 20, 105, 2, '26/11/1999');
INSERT INTO PEDIDOS VALUES(1010, 40, 102, 3, '08/12/1999');
INSERT INTO PEDIDOS VALUES(1011, 30, 106, 2, '15/12/1999');
INSERT INTO PEDIDOS VALUES(1012, 10, 105, 3, '06/12/1999');
INSERT INTO PEDIDOS VALUES(1013, 30, 106, 2, '06/12/1999');
INSERT INTO PEDIDOS VALUES(1014, 20, 101, 4, '07/01/2000');
INSERT INTO PEDIDOS VALUES(1015, 70, 105, 4, '16/01/2000');
INSERT INTO PEDIDOS VALUES(1017, 20, 105, 6, '20/01/2000');
GO

Manejadores de Base de Datos (gratis):

- SQL Server Express
- MySQL
- PostgreSQL
- Oracle Express
Quien quiera practicar se lo recomiendo, es muy buen material ;)


SuerteX :)
 
  • Me gusta
Reacciones: 2 personas
Hola a todos

Estoy empezando a ver este curso de Bases de Datos en la Universidad. Cómo podría yo empezar a hacer aplicaciones con el lenguajes SQL, en la plataforma Oracle.

Muchas gracias por la atención prestada por ustedes.
 
muy buen material viejo VIRUTERO_5

Tnx man ;)


Hola a todos

Estoy empezando a ver este curso de Bases de Datos en la Universidad. Cómo podría yo empezar a hacer aplicaciones con el lenguajes SQL, en la plataforma Oracle.

Muchas gracias por la atención prestada por ustedes.

Toma los datos que di anteriormente y exportalos a PL/SQL, no sera muy dicil, luego con esos datos practica, ya que la mayoria de las intrucciones usadas en el manual son instrucciones del Standar de SQL ;)


SuerteX :)
 

Los últimos temas