Foro oficial de SQL

jasz

Lanero Reconocido
Se unió
10 Ene 2002
Mensajes
1,295
er.. si... hablando de lo de limits... ese era mi aporte....

y tambien con el cuento de sacar resultados de dos tablas....
 

poppetmaster

Lanero Reconocido
Se unió
11 Feb 2004
Mensajes
788
meickol dijo:
vea hermano pruebe ese codigo en mysql y si le sirve sin ningun error me avisa por que a mi no me sirve y he buscado informacionen el manual de mysql y es funcion no sale, por favor ayuda, comprendanme !!!! , y con lo de el modo bach tambien ayudeneme!!!!! ya solo me quedan dos dias !!! . gracias de antemano!!!jeeee. ha algo tengo mysql 4.1 osea no se si sera por la version .
entonz... bueno hermanito me parece raro que esa sentencia no le funcione porque con eso estoy trabajando en este momento en postgres y oracle... para poderte colaborar mas pongame la sentencia de la creacion de la tabla y el insert que estas haciendo para realizar la prueba....porque sosopecho que estas generando mal el constraint...

2. que es eso de bach... lo que quieres es trabajar directamente en la consola de mysql...??? o estoy MFT... bueno cualquier cosa avisas...

Nos vemos
 

poppetmaster

Lanero Reconocido
Se unió
11 Feb 2004
Mensajes
788
investigando un poco encontre esto... y me genera alguito de mala espina:

A partir de la versión 3.23.44 de MySQL, las tablas InnoDB soportan verificación para restricciones de claves foráneas. Hay que tener en cuenta que la sintaxis para FOREIGN KEY en InnoDB es mucho más restrictiva que la sintaxis presentada antes: las columnas en la tabla referenciada deben ser nombradas explícitamente. InnoDB soporta las acciones ON DELETE y ON UPDATE para claves ajenas tanto para MySQL 3.23.50 como para 4.0.8, respectivamente. Para otros tipos de tablas, el servidor MySQL verifica la sintaxis de FOREIGN KEY, CHECK y REFERENCES en comandos CREATE TABLE, pero no se toma ninguna acción.
ese de que no se toma ninguna accion no es bueno... porque realice las pruebas y nada (eso si con tablas tipo innodb)...
EDIT:
Bueno no somos los unicos.....
http://barrapunto.com/comments.pl?sid=46055&cid=385894

pd. no es que sea fanboy pero un punto mas a postgreSQL :)
 

.:*MeickoL*:.

Lanero Reconocido
Se unió
4 Ene 2005
Mensajes
528
mouffetard dijo:
meickol, quisiera hacerte un aporte que creo constructivo y espero que resulte positivo. He leído en el foro que las personas se han esforzado con su tiempo y pensamiento (yo también lo he hecho), para darte algunas respuestas. Estas respuestas, por cientos de motivos, no son absolutamente completas, son indicaciones que debes investigar para obtener tu solución completa.

Esto no se hace con malas intenciones, por el contrario, los miembros de esta comunidad te están donando su tiempo y conocimientos. Ahora tu deben esforzarte tratando de entender el resto del problema. Generalmente, cuando las personas se dan cuenta que te haz esforzado, se animan a ayudarte aun más.

Animo pues, y cuando hayas entendido que existen dos tablas: OFICINAS y EMPLEADOS que tienen una relación 1 a n, entonces podrás preguntar más detalles para entender el problema. Seguro volveremos a colaborarte con tus dudas.


mouffetard gracias por el regaño me sirvio de mucho!!! por esa le voy a regalar un karma, no solo por el regaño si no por que el aporte, tarde pero me sirvio de mucho logre entenderlo a la perfeccion, es mas me gustaria que me agregara en su msn meickol@hotmail.com para hablar mejor y darle es agradecimiento de una manera un poco mas forma!!!. jejejeje
 

.:*MeickoL*:.

Lanero Reconocido
Se unió
4 Ene 2005
Mensajes
528
esto es lo que exactamente coloco en el promt de mysql para crear la table espero que ahora si me puedan ayudar . jejejejeje.

create table proveedores
(
cod_proveedor int(5) null constraint nombre_del_check check (cod_proveedor is null or (cod_proveedor between '0' and '1500' )),
nombre_proveedor varchar(120),
direccion varchar(120),
telefono varchar(20),
contacto varchar(60)
);

vamos ustedes pueden muchachos ustedes son colombia en el mundo !!!! vamos !!!
 

.:*MeickoL*:.

Lanero Reconocido
Se unió
4 Ene 2005
Mensajes
528
y sobre la nota que acabas de poner poppetmaster pues yo hise el check como me lo indicaste la primera vez y no me sa error pero no hace lo que le dije que hiciera, osea como si no ubiese colocado nada .
 

poppetmaster

Lanero Reconocido
Se unió
11 Feb 2004
Mensajes
788
meickol dijo:
y sobre la nota que acabas de poner poppetmaster pues yo hise el check como me lo indicaste la primera vez y no me sa error pero no hace lo que le dije que hiciera, osea como si no ubiese colocado nada .
pues mejo ... la sentencia que ud coloco no me funciona -... (check y constraint) ademas como site anteriormente la sentencia la recibe pero no genera ninguna accion entonces asi ni modo... la otra que se pudiera hacer es realizar un trigger para validar el valor .. pero creo que mysql todavia no soporta triggers...... :(
 

uranio

Lanero Reconocido
Se unió
6 Sep 2005
Mensajes
75
meickol dijo:
esto es lo que exactamente coloco en el promt de mysql para crear la table espero que ahora si me puedan ayudar . jejejejeje.

create table proveedores
(
cod_proveedor int(5) null constraint nombre_del_check check (cod_proveedor is null or (cod_proveedor between '0' and '1500' )),
nombre_proveedor varchar(120),
direccion varchar(120),
telefono varchar(20),
contacto varchar(60)
);

vamos ustedes pueden muchachos ustedes son colombia en el mundo !!!! vamos !!!
meickol y todos los Ing LNAeros encontre esta pagina que tiene muy buenos tips de desarrollo, y puede tener la solucion a los check que tanto se busca.

Espero sea de utilidad para todos.

http://www.datafull.com/armatusitio/informe.php?id=32
 

Jesus_ADS

Lanero Reconocido
Se unió
12 May 2006
Mensajes
44
TOP en postgres???

Hola:), necesito una ayudita.... Estoy trabajando con PostgresSQL y necesito una funcion equivalente al "TOP" de MySQL pero en postgres... Sera que saben cual es??? :(gracias:-p

Necesito mostrar las primeras "n" tuplas con mayor "algo" y no encuentro la funcion en postgres que me lo haga, budscando vi que Top lo hace en MySql pero cual es la de Postgres?? :s
 

jomunoz

Lanero Reconocido
Se unió
31 Mar 2004
Mensajes
704
Jesus_ADS dijo:
Hola:), necesito una ayudita.... Estoy trabajando con PostgresSQL y necesito una funcion equivalente al "TOP" de MySQL pero en postgres... Sera que saben cual es??? :(gracias:-p

Necesito mostrar las primeras "n" tuplas con mayor "algo" y no encuentro la funcion en postgres que me lo haga, budscando vi que Top lo hace en MySql pero cual es la de Postgres?? :s

SELECT edad FROM persona ORDER BY edad LIMIT 5

La consulta anterior lista las 5 personas con mayor edad. Asi que con ORDER BY y LIMIT puede hacer lo mismo.
 

Jesus_ADS

Lanero Reconocido
Se unió
12 May 2006
Mensajes
44
Thank's

jomunoz dijo:
SELECT edad FROM persona ORDER BY edad LIMIT 5

La consulta anterior lista las 5 personas con mayor edad. Asi que con ORDER BY y LIMIT puede hacer lo mismo.

Gracias... era justo lo que necesitaba =)
 

Jesus_ADS

Lanero Reconocido
Se unió
12 May 2006
Mensajes
44
Duda sobre una consulta

Tengo las siguientes entidades:

PHP:
Articulo (Cod, Origen, Fecha, Votos, Cod_Materia)
Materias (Cod, Descripcion)
como puedo mostrar el cod de los n primeros articulos con mas votos de cada materia??

hice algo asi,

PHP:
select articulo.cod, articulo.votos, articulo.cod_mat
from articulo, materias
where articulo.cod_mat = materias.cod
order by articulo.cod_mat, articulo.votos desc;
pero eso me muestra todos los cod de articulos?? como filtro que solo sean los que tienen mas votos??? :(

Gracias
 

jomunoz

Lanero Reconocido
Se unió
31 Mar 2004
Mensajes
704
Jesus_ADS dijo:
PHP:
select articulo.cod, articulo.votos, articulo.cod_mat
from articulo, materias
where articulo.cod_mat = materias.cod
order by articulo.cod_mat, articulo.votos desc;
pero eso me muestra todos los cod de articulos?? como filtro que solo sean los que tienen mas votos??? :(

Gracias
Deberia ordenar primero por votos y luego por codigo, ademas le falto el LIMIT

Para los 5 articulos con mas votos seria así:
PHP:
select articulo.cod, articulo.votos, articulo.cod_mat
from articulo, materias
where articulo.cod_mat = materias.cod
order by articulo.votos,articulo.cod_mat desc limit 5;
 

RogerJose

Lanero Reconocido
Se unió
6 Mar 2005
Mensajes
545
jomunoz dijo:
Deberia ordenar primero por votos y luego por codigo, ademas le falto el LIMIT

Para los 5 articulos con mas votos seria así:
PHP:
select articulo.cod, articulo.votos, articulo.cod_mat
from articulo, materias
where articulo.cod_mat = materias.cod
order by articulo.votos,articulo.cod_mat desc limit 5;
Disculpa jomunoz, pero me parece que eso no se ajusta a lo que quiere Jesus_ADS

Lo que hace esa consulta es ordenar los registros por votos ascendentemente y por codigo de materias descedentement, porque la columna votos se sigue ordenando ascendentemente (por defecto) ya que la clausula desc solo afecta la ultima columna (cod_mat).

Para ordenar por votos de mayor a menor (descendentemente) seria asi:

Código:
select articulo.cod, articulo.votos, articulo.cod_mat
from articulo, materias
where articulo.cod_mat = materias.cod
order by articulo.votos DESC,articulo.cod_mat limit 5;
Pero segun entiendo esta ultima consulta tampoco satisface lo que pide Jesus_ADS, ya que muestra los 5 articulos con mayor votacion en general; mas no, los 5 con mayor votacion de cada materia, que es lo que piden (creo).

.
 

RogerJose

Lanero Reconocido
Se unió
6 Mar 2005
Mensajes
545
Creo que lo que quiere Jesus_ADS no es posible conseguirlo con una consulta SQL :\ .
Se podria hacer utilizando un query por cada materia, pero seria no dinamico y poco elaborado.

Me parece que es mejor hacer eso a nivel de codigo, lo puede hacer con un ciclo "mientras que".

Lo que si se puede hacer con un query es extraer los articulos con mayor votacion en cada materia...

.
 

meletrepo

Lanero Reconocido
Se unió
7 Oct 2005
Mensajes
282
Hola que tal estoy aprendiendo a hacer procediemintos en mysql

DELIMITER $$

DROP PROCEDURE IF EXISTS `bvcbdunic`.`prueba` $$
CREATE PROCEDURE `bvcbdunic`.`prueba` ()
BEGIN
if exists(select count( * ) from bvcbdunic.prueba having count( * )>0 );
insert into bvcbdunic.prueba (prueba) values ('no hay nada');
end
else insert into bvcbdunic.prueba (prueba) values (select count( * ) from prueba);
end
END $$

DELIMITER ;
no me sale alguein me puede ayudar gracias
 

meletrepo

Lanero Reconocido
Se unió
7 Oct 2005
Mensajes
282
buenas tengo una preguntilla estoy haciendo un store procedure en mysql
tengo un insert
que no me funciona bien, si alguien me puede ayudar porfa
define x double(100,2);
select (a.v_repbold_monto/b.v_bdi_ina_suma*100) into x from tbrepbold a, tbbdidef b;

update tbrepbold set v_repbold_partici = x;

ERROR 1172 (42000): Result consisted of more than one row

y tambien lo hago asi

update tbrepbold set v_repbold_partici = (select (a.v_repbold_monto/b.v_bdi_ina_suma*100) from tbrepbold a, tbbdidef b);

ERROR 1093 (HY000): You can't specify target table 'tbrepbold' for update in FRO
M clause

 

RogerJose

Lanero Reconocido
Se unió
6 Mar 2005
Mensajes
545
meletrepo dijo:
buenas tengo una preguntilla estoy haciendo un store procedure en mysql
tengo un insert
que no me funciona bien, si alguien me puede ayudar porfa
define x double(100,2);
select (a.v_repbold_monto/b.v_bdi_ina_suma*100) into x from tbrepbold a, tbbdidef b;

update tbrepbold set v_repbold_partici = x;

ERROR 1172 (42000): Result consisted of more than one row

y tambien lo hago asi

update tbrepbold set v_repbold_partici = (select (a.v_repbold_monto/b.v_bdi_ina_suma*100) from tbrepbold a, tbbdidef b);

ERROR 1093 (HY000): You can't specify target table 'tbrepbold' for update in FRO
M clause

El resultado del query te arroja mas de un registro, por eso no lo puedes meter en una variable.

-
 

Dacar.

Lanero Reconocido
Se unió
16 Jul 2006
Mensajes
1,478
Oigan y este forito tan importante que hace por aca tirado en el olvido, estaba en la página 8, pilas .:*MeickoL*: no deje perder el forito que bien importante si es...prontamente les participo bastante ya que estoy haciendo el resumen de temas para darle un poquito de orden a los foros..saludos
 
Arriba