Foro oficial de SQL

INNER JOIN, TOP, ORDER BY y GROUP BY

alcaba:

Yo sugiero hacer un INNER JOIN entre tu tabla de pedidos y clientes, usando customer_id como enlace, junto con lo que menciona VIRUTERO_5. Lo hice así y me funcionó fácilmente.

Saludos y suerte :)
 
Ajap.... solo cuenta todo los pedidos que tiene cada cliente y busca el TOP 1 ..... asi ya tiene el cliente que mas compra con un simple query... luego haces con el lo que quieras ;)



SuerteX :)
 
Ayuda con un procedure.
Que tal soy nuevo en esto de la programacion y estoy trabajando para obtener los numeros primos en pl/ sql y tengo este codigo:

create or replace procedure pri ( n in number)
is
primo number :=1;
begin
for i in 3..n loop
primo := 1;
for j in 2..i-1 loop
if mod (i,j) = 0 then
primo := 0;
end if;
end loop;
if (primo = 1)then
imprimir(i);
end if;
end loop;
end;
/

solo que me genera los primos que estan en el rango del parametro n y no los n primeros....
alguna idea para modificarlo???
 
Sugerencias

Algunas sugerencias:

  1. Cambia el ciclo más externo por un WHILE con la condición de que i sea menor que n
  2. Maneja una variable extra de tipo booleano para controlar la condición de si es un primo o no (un nombre adecuado sería es_primo)
  3. En el IF donde verificas la condición de si el residuo de la división es cero, cambia la referencia de primo por tu variable booleana, y agrega un EXIT (no tiene caso revisar los demás números si una división ya dio cero).
  4. Agrega un ELSE a ese IF para asignar un TRUE a tu variable booleana.
  5. Por último, en el IF donde imprimes el número primo, incrementa tu variable primo en 1 para verificar el siguiente número, en incrementa también i en 1.
 
Wenas! =)
Necesito crear una tabla que tiene dos claves principales que a la vez son foraneas.

Toy usando este codigo:

Código:
CREATE TABLE MATRICULAS2 (
NRC_MATRI INTEGER NOT NULL,
ESTUDIANTE INTEGER NOT NULL,
PRIMARY KEY(NRC_MATRI,ESTUDIANTE),
FOREIGN KEY ESTUDIANTE REFERENCES PERSONAS (CEDULA),
FOREIGN KEY NRC_MATRI REFERENCES CURSOS (NRC)
);

Pero marca error en la linea cinco, supongo que para que sean primarias y foraneas al tiempo hay que hacer algo diferente.

Thx por la ayuda >D

BTW: Las claves que se estan poniendo como foraneas ya son primarias en sus respectivas tablas asi que ese no es el error, el error que marca es el 104.
 
Wenas! =)
Necesito crear una tabla que tiene dos claves principales que a la vez son foraneas.

Toy usando este codigo:

Código:
CREATE TABLE MATRICULAS2 (
NRC_MATRI INTEGER NOT NULL,
ESTUDIANTE INTEGER NOT NULL,
PRIMARY KEY(NRC_MATRI,ESTUDIANTE),
FOREIGN KEY ESTUDIANTE REFERENCES PERSONAS (CEDULA),
FOREIGN KEY NRC_MATRI REFERENCES CURSOS (NRC)
);

Pero marca error en la linea cinco, supongo que para que sean primarias y foraneas al tiempo hay que hacer algo diferente.

Thx por la ayuda >D

BTW: Las claves que se estan poniendo como foraneas ya son primarias en sus respectivas tablas asi que ese no es el error, el error que marca es el 104.


No puedes tener 2 claves primarias... puedes poner una UNIQUE y una PRIMARY KEY ;), por cierto, que manejador usas?


SuerteX :)
 
Varias cosas:

Google + Nomenclatura de objetos

Debería acostumbrarse a ponerle nombres a los constraints (Claves primarias, Claves foraneas)

CONSTRAINT FK_TABLAREFERENCIA_TABLALOCAL FOREIGN KEY (TABLAREFERENCIA _COLUMNA) REFERENCES TABLAREFERENCIA(COLUMA),
CONSTRAINT PK_COMPUTADOR PRIMARY KEY (COLUMNA1,COLUMNA2,COLUMNA3)

Acuérdese de los paréntesis.

Uno puede tener mas de 1 clave primaria (mas de 1 identificador) en una tabla
 
Varias cosas:

Google + Nomenclatura de objetos

Debería acostumbrarse a ponerle nombres a los constraints

CONSTRAINT FK_TABLAREFERENCIA_TABLALOCAL FOREIGN KEY (TABLAREFERENCIA _COLUMNA) REFERENCES TABLAREFERENCIA(COLUMA),
CONSTRAINT PK_COMPUTADOR PRIMARY KEY (COLUMNA1,COLUMNA2,COLUMNA3)

Acuérdese de los paréntesis.

Uno puede tener mas de 1 clave primaria (mas de 1 identificador)

Yup.... y si lo va hace y no le quiere poner los constraint que lo haga por columnas y no por la tabla ;)


SuerteX :)
 
Muchas gracias por las respuestas a los dos.

Aclaro, ahi no se estan definiendo dos claves primarias, estoy definiendo una clave primaria compuesta que asi fue como lei que se hacia.

El punto es que tiene que tener una clave primaria compuesta, y las otras dos como foraneas. Todo eso al mismo tiempo.

El error si quito las ultimas dos lineas, donde se definen las foraneas, no lo marca. Solo lo marca cuando defino esa clave primaria compuesta y las foraneas al tiempo, asi que si saben a que se debe el error o como se debe hacer eso se los agradecere.

Suerte!! =)

BTW: No entendi los de los constraint, eso no me lo han mencionado xD
 
Muchas gracias por las respuestas a los dos.

Aclaro, ahi no se estan definiendo dos claves primarias, estoy definiendo una clave primaria compuesta que asi fue como lei que se hacia.

El punto es que tiene que tener una clave primaria compuesta, y las otras dos como foraneas. Todo eso al mismo tiempo.

El error si quito las ultimas dos lineas, donde se definen las foraneas, no lo marca. Solo lo marca cuando defino esa clave primaria compuesta y las foraneas al tiempo, asi que si saben a que se debe el error o como se debe hacer eso se los agradecere.

Suerte!! =)

BTW: No entendi los de los constraint, eso no me lo han mencionado xD

Mira donde declaras dos claves primarias

PRIMARY KEY(NRC_MATRI,ESTUDIANTE),


Realmente no se que es una clave compuesta, pero no creo que sea asi ;)

PD: si estoy mal que alguien me aclare :nervios:


SuerteX :)
 
a mi me gusta todo por separado :p

CREATE TABLE matriculas2 (
nrc_matri INT NOT NULL,
estudiante INT NOT NULL);

ALTER TABLE matriculas2 ADD PRIMARY KEY (nrc_matri, estudiante);

ALTER TABLE matriculas2
ADD CONSTRAINT matriculas2_personas FOREIGN KEY (estudiante) REFERENCES personas (cedula);

ALTER TABLE matriculas2
ADD CONSTRAINT matriculas2_cursos FOREIGN KEY (nrc_matri) REFERENCES cursos (nrc);
aunque si lo necesitas todo junto

CREATE TABLE MATRICULAS2 (
NRC_MATRI INTEGER NOT NULL,
ESTUDIANTE INTEGER NOT NULL,
PRIMARY KEY(NRC_MATRI,ESTUDIANTE),
FOREIGN KEY (ESTUDIANTE) REFERENCES PERSONAS (CEDULA),
FOREIGN KEY (NRC_MATRI) REFERENCES CURSOS (NRC)
);
solo te faltaban los parentesis del foreign key
 
  • Me gusta
Reacciones: 2 personas
Recomiendo que usen Power Designer para crear las tablas, les permite crear lenguaje SQL en casi todos los DBMS conocidos y ademas les chequea el modelo Entidad-Relacion para ver si esta bien diseñado y relacionado...es muy bueno
 
a mi me gusta todo por separado :p

aunque si lo necesitas todo junto

solo te faltaban los parentesis del foreign key

Mil gracias parce;)

Eso era lo que necesitaba, auqneu el primer codigo que me recomendaste sera mirarlo mejor porque no lo entiendo muy bien... soy noob en esto.

Suerte =)
 
bueeeeno, me doy, les cuento que una cosa es administrar una base de datos y otra es hacer una jejeje.

resulta que estoy trabajando sobre Microsoft SQL 2005, y pues tengo las siguientes tablas:

alumnos:
alumn_id clave primaria identidad(1,1) no nulable,
alumn_nom nvarchar(50),
alumn_telefono nvarchar(20)

profesores:
profe_id clave primaria identidad(1,1) no nulable,
profe_nombre nvarchar(50),
profe_telefono nvarchar(10)

clases:
clase_id clave primaria identidad(1,1) no nulable,
clase_nomb integer references alumnos(alumn_id)


y pues voy y lleno de nombres la tabla "alumnos" y se supone que deben aparecer los codigos de los alumnos en la tabla "clase", pero no aparece nada :-S, ¿que estoy haciendo mal?

la consulta que estoy haciendo es la siguiente:

Código:
create table epe..clases(
clase_id int primary key,
clase_nomb integer references alumnos(alumn_id),
)

y bueno, la siguiente pregunta seria, ya resolviendo la primera, ¿como hago para, que en la tabla "clases" a partir del codigo del estudiante me aparezca el nombre del estudiante? ¿eso ya seria de la parte de programacion del software?

Estoy programando en C# como dato, se les agradece infinitamente señores LANeros.
 
bueeeeno, me doy, les cuento que una cosa es administrar una base de datos y otra es hacer una jejeje.

resulta que estoy trabajando sobre Microsoft SQL 2005, y pues tengo las siguientes tablas:

alumnos:
alumn_id clave primaria identidad(1,1) no nulable,
alumn_nom nvarchar(50),
alumn_telefono nvarchar(20)

profesores:
profe_id clave primaria identidad(1,1) no nulable,
profe_nombre nvarchar(50),
profe_telefono nvarchar(10)

clases:
clase_id clave primaria identidad(1,1) no nulable,
clase_nomb integer references alumnos(alumn_id)


y pues voy y lleno de nombres la tabla "alumnos" y se supone que deben aparecer los codigos de los alumnos en la tabla "clase", pero no aparece nada :-S, ¿que estoy haciendo mal?

la consulta que estoy haciendo es la siguiente:

Código:
create table epe..clases(
clase_id int primary key,
clase_nomb integer references alumnos(alumn_id),
)

y bueno, la siguiente pregunta seria, ya resolviendo la primera, ¿como hago para, que en la tabla "clases" a partir del codigo del estudiante me aparezca el nombre del estudiante? ¿eso ya seria de la parte de programacion del software?

Estoy programando en C# como dato, se les agradece infinitamente señores LANeros.

Deberías revisar que tablas necesitas y que información necesitas almacenar referente a cada clase, alumno, profesor.

Si vas a tener a mas de un alumno por clase una opción seria tener una tabla que relacione que un alumno esta inscrito en una clase.
 
Deberías revisar que tablas necesitas y que información necesitas almacenar referente a cada clase, alumno, profesor.

Si vas a tener a mas de un alumno por clase una opción seria tener una tabla que relacione que un alumno esta inscrito en una clase.

bueno, la idea es aprender a hacer tablas con datos relacionados, digamos que no fuera asi el ejemplo, sino que fueran medicos, usuarios y citas medicas, entonces como los datos de usuarios y medicos se relacionan en la tabla "Citas", ¿como crearia yo esa tabla citas de manera que cuando yo haga un "select* from citas" me aparezcan los datos relacionados?
 
bueno, la idea es aprender a hacer tablas con datos relacionados, digamos que no fuera asi el ejemplo, sino que fueran medicos, usuarios y citas medicas, entonces como los datos de usuarios y medicos se relacionan en la tabla "Citas", ¿como crearia yo esa tabla citas de manera que cuando yo haga un "select* from citas" me aparezcan los datos relacionados?

CREATE TABLE DOCTOR
(
CODIGO NVARCHAR2(4),
NOMBRE NVARCHAR2 (20) NOT NULL,
CONSTRAINT PK_ DOCTOR PRIMARY KEY (CODIGO)
);

CREATE TABLE PACIENTE
(
CODIGO NVARCHAR2(4),
NOMBRE NVARCHAR2 (20) NOT NULL,
CONSTRAINT PK_PACIENTE PRIMARY KEY (CODIGO)
);


CREATE TABLE CITA
(
DOCTOR_CODIGO NVARCHAR2(4),
PACIENTE_CODIGO NVARCHAR2(4),
CONSTRAINT FK_CITA_PACIENTE FOREIGN KEY (DOCTOR_CODIGO) REFERENCES PACIENTE(CODIGO),
CONSTRAINT FK_CITA_DOCTOR FOREIGN KEY (PACIENTE_CODIGO) REFERENCES DOCTOR(CODIGO),
CONSTRAINT PK_CITA PRIMARY KEY (DOCTOR_CODIGO,PACIENTE_CODIGO)
);

El select ->

SELECT P.NOMBRE AS NOMBREPAC, P.NOMBRE AS NOMBREDOC
FROM CITA CI, PACIENTE P, DOCTOR D
WHERE CI.DOCTOR_CODIGO = d.codigo
AND ci.paciente_codigo = p.codigo;


NO HAGA copy paste que eso MATA
 
  • Me gusta
Reacciones: 2 personas
jejejeje muy cierto!

freeeeescos freeeeescos que yo se, ahora la pregunta es, ¿que funcion cumple el "constraint"?? porque constraint pk_tal o fk_tal??? pa que eso?

jejeje, muchisimas gracias por la colaboracion, de verdad me ayudan un resto!!!


OOOPppsss, lleno las tablas con los correspondientes datos, y cuando voy a mirar la tabla "Citas" no hay datos!!!!! :S
 
freeeeescos freeeeescos que yo se, ahora la pregunta es, ¿que funcion cumple el "constraint"?? porque constraint pk_tal o fk_tal??? pa que eso?

jejeje, muchisimas gracias por la colaboracion, de verdad me ayudan un resto!!!

mmmm..........
pk= llave primaria
fk= llave foranea


:cool:
 

Los últimos mensajes

Los últimos temas