Allied Modders en español
[ SOLUCIONADO ] MySQL varias tablas - Versión para impresión

+- Allied Modders en español (https://amxmodx-es.com)
+-- Foro: Fuera de tema (https://amxmodx-es.com/Forum-Fuera-de-tema)
+--- Foro: Otros Lenguajes (https://amxmodx-es.com/Forum-Otros-Lenguajes)
+--- Tema: [ SOLUCIONADO ] MySQL varias tablas (/Thread-SOLUCIONADO-MySQL-varias-tablas)



[ SOLUCIONADO ] MySQL varias tablas - Hinami - 27/03/2018

Buenas xd

quiero averiguar como trabajar con varias tablas, en un login de cs por ejemplo

digamos que tengo estos 3 campos en la tabla principal

id = llave primaria
user
pw

y tengo estos otros en la tabla secundaria

id_user = llave foranea
lvl default '0'
rr default '0
otros 5 campos más supongamos

y en otra tabla

id_user2 = llave foranea
y otros 7 campos con default '0'

mi duda es como podría hacer que al crear un usuario y se incremente la id está se inserte en las otras tablas, así como cuando se usa el delete/update on cascade y hace que se actualice o borre en todas las tablas. ( o saber como es que sería )


por que yo estaba usando en 2 tablas el triger after pero me dijeron que eso no se usa para ese tipo de cosas, y en el caso de cs tarda algo la consulta xd ( o no se si era el alojamiento xd ) y ya con 3 no supe usar el triger, intente algo como esto

Código:
create triger tg_ai after insert into on table1 for each row
begin;
insert into table2 (id_user) values (new.id);
insert into table3 (id_user2) values (new.id);
end;
aunque no funciono ( no jalo la consulta ) Roflmao

en fin mi duda es como sería la manera correcta recién estoy adentrándome en el mysql ( veo unos tuts pero aun no llego a esto aunque tengo curiosidad xd )


leí algo sobre el PA en MySQL pero la verdad le entendí un poco apenasxd ( aunque ya ando leyendo )


RE: MySQL varias tablas - meTaLiCroSS - 27/03/2018

trigger


RE: MySQL varias tablas - Hinami - 27/03/2018

a perdón xd, es que el myphpadmin ya te da la palabra xd


RE: MySQL varias tablas - KISKE - 27/03/2018

Tu tabla "principal" tiene que tener un campo 'id' que sea AUTO INCREMENT.

Luego, en la segunda tabla, un campo 'id' que sea AUTO INCREMENT y tu campo 'id_user' que va a usarse para relacionar con las otras tablas.

Por último, tu tercera tabla, un campo 'id' que sea AUTO INCREMENT y tu campo 'id_user' (no hay necesidad de llamarle id_user2) que va a usarse para relacionar con las otras tablas.

Cuando el usuario se registra, simplemente poné todos los INSERT INTO que necesites separados por ';' en un string, y que la query empiece con BEGIN y termine con COMMIT;
Eso va a hacer que si alguno de todos tus INSERT INTO falla, ninguno se ejecute.


De todos modos, la manera ideal sería usar TRANSACTIONS o STORED PROCEDURES.


RE: MySQL varias tablas - Hinami - 27/03/2018

y si uso el begin; y commit; con varias consultas no tardaría mucho segundos en ejecutar la consulta si la ejecutará con un My/SqlCommand o SQL_ThreadQuery en el caso de pawn?.


y sobre los procedimientos almacenados podes dejarme algún ejemplo de como insertar y en el caso de pawn como ejecutarlo? si no es mucho pedir, estuve leyendo y entendí ( o eso creo ) de como ejecutarlos en VB o c#, aunque en pawn ni idea Roflmao


RE: MySQL varias tablas - KISKE - 27/03/2018

(27/03/2018, 10:16 PM)Hypnotize escribió: y si uso el begin; y commit; con varias consultas no tardaría mucho segundos en ejecutar la consulta si la ejecutará con un My/SqlCommand o SQL_ThreadQuery en el caso de pawn?.

No entendí nada, que tiene que ver lo que mencionás ?


(27/03/2018, 10:16 PM)Hypnotize escribió: y sobre los procedimientos almacenados podes dejarme algún ejemplo de como insertar y en el caso de pawn como ejecutarlo? si no es mucho pedir, estuve leyendo y entendí ( o eso creo ) de como ejecutarlos en VB o c#, aunque en pawn ni idea Roflmao

La verdad ni idea en Pawn.


RE: MySQL varias tablas - Manu - 27/03/2018

Yo intenté usar Transactions en MySQL Threads y no pude.


RE: MySQL varias tablas - Hinami - 28/03/2018

(27/03/2018, 11:45 PM)KISKE escribió:
(27/03/2018, 10:16 PM)Hypnotize escribió: y si uso el begin; y commit; con varias consultas no tardaría mucho segundos en ejecutar la consulta si la ejecutará con un My/SqlCommand o SQL_ThreadQuery en el caso de pawn?.

No entendí nada, que tiene que ver lo que mencionás ?

osea si hago esto

begin;
insert into ...
insert into ...
insert into ...
commit;

dentro de un MysqlComand ( VB o c# ) o en el caso de pawn sql_thread


es que quiero informarme y saber como se hace por que quiero implementarlo en proyectos de VS o Plugins.

entrando a pawn + mysql como le haces tu para tus sistemas de cuentas? yo veo que tu zp usa muchas tablas, la tabla de combos, la general entre otras, y me imagino que todas están bien conectadas o relacionadas no se como se dice xd


otra dudita para que sirve relacionar las tablas?

aparte de poder borrar/actualizar un dato en todas las tablas


RE: MySQL varias tablas - KISKE - 28/03/2018

Las tablas de mi ZP son un asco, las hice en su momento con los conocimientos que tenía, uno siempre va aprendiendo y mejorando.


RE: MySQL varias tablas - Sugisaki - 28/03/2018

(27/03/2018, 09:41 PM)Hypnotize escribió: mi duda es como podría hacer que al crear un usuario y se incremente la id está se inserte en las otras tablas, así como cuando se usa el delete/update on cascade y hace que se actualice o borre en todas las tablas. ( o saber como es que sería )

puedes usar argo asi
en creando el user un insert cualquiera
Código PHP:
INSERT INTO `users` (`name`, `pass`) VALUES ('sugi''sugi'); 

en el threadquery obtienes el id del insert con
Código PHP:
SQL_GetInsertId(query

updatear o insertar nose que seyo los riales, seria como
Código PHP:
INSERT INTO `cs_money` (`id` , `money`) VALUES ('%i''16000'ON DUPLICATE KEY UPDATE `money`='16000'

%i = id del player en la base de datos


si quieres usar un begin igual puedes usar en la sintaxis LAST_INSERT_ID()
Código PHP:
BEGIN;
INSERT INTO `users` (`name`, `pass`) VALUES ('sugi''sugi');
INSERT INTO `cs_money` (`id` , `money`) VALUES (LAST_INSERT_ID(), '16000')
COMMIT


a lo mejor yo entendi mal lo que quieres hacer

PD: La tabla de users (la que tiene el autoincrement) creala con el motor MyISAM


RE: MySQL varias tablas - Hinami - 28/03/2018

bueno voy a probar que me va mejor Roflmao

cuanto más la cague, más aprenderé xdxd


RE: MySQL varias tablas - El pirucho XP-007 - 12/05/2018

(28/03/2018, 11:25 PM)Hypnotize escribió: bueno voy a probar que me va mejor Roflmao

cuanto más la cague, más aprenderé xdxd

Eso me suena a mi firma. .-.


RE: MySQL varias tablas - Hinami - 12/05/2018

y tu que man?

mira la fecha del tema y deja de comentar mamadas, cualquier persona puede decir lo que quiera no sos el único que sabe hacer funcionar su cacahuete Whatever

ni te gastes en responder


RE: MySQL varias tablas - Skylar - 15/05/2018

(12/05/2018, 04:18 PM)El pirucho XP-007 escribió:
(28/03/2018, 11:25 PM)Hypnotize escribió: bueno voy a probar que me va mejor Roflmao

cuanto más la cague, más aprenderé xdxd

Eso me suena a mi firma. .-.

Sr. Coelho