Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fabyo

Mini Tutorial de Mysql

Recommended Posts

Então Fabyo, mais no caso você explicou do começo, ou seja, para criar as tabelas também. Eu não teria que ter relacionado elas com o REFERENCES antes de fazer a consulta?Pq no banco de dados que você criou não tem references para relacionar as tabelas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

banco de teste

CREATE TABLE usuario_time ( id_usuario smallint(5) unsigned NOT NULL default '0', id_time smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (id_usuario, id_time))CREATE TABLE usuarios ( id_usuario smallint(5) unsigned NOT NULL auto_increment, usuario varchar(40) collate utf8_unicode_ci NOT NULL default '', PRIMARY KEY (id_usuario))INSERT INTO usuarios VALUES (1, 'Fabyo');INSERT INTO usuarios VALUES (2, 'Adailton');INSERT INTO usuarios VALUES (3, 'Erick');INSERT INTO usuarios VALUES (4, 'Luiz');INSERT INTO usuarios VALUES (5, 'Fernando');CREATE TABLE times ( id_time smallint(5) unsigned NOT NULL auto_increment, time varchar(40) collate utf8_unicode_ci NOT NULL default '', PRIMARY KEY (id_time))INSERT INTO times VALUES (1, 'Sao Paulo');INSERT INTO times VALUES (2, 'Santos');INSERT INTO times VALUES (3, 'Flamengo');INSERT INTO times VALUES (4, 'Fluminense');INSERT INTO times VALUES (5, 'Palmeiras');INSERT INTO times VALUES (6, 'Vasco');INSERT INTO times VALUES (7, 'Corinthians');CREATE TABLE usuario_time ( id_usuario smallint(5) unsigned NOT NULL default '0', id_time smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (id_usuario,id_time)) INSERT INTO usuario_time VALUES (1, 1);INSERT INTO usuario_time VALUES (2, 5);INSERT INTO usuario_time VALUES (3, 4);INSERT INTO usuario_time VALUES (4, 3);INSERT INTO usuario_time VALUES (5, 6);

obs: para quem usa mysql muito antigo nao funcionara esse banco dai nesse caso monte um banco sem o unicodequalquer duvida só perguntar
Porque você criou 2 vezes a tabela usuario_time? não entendí...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola pessoal, gostaria de saber se alguem tem um sistema ai ja pronto mesmo que simples, mas que use varias tabelas relacionadas onde o mesmo Sujeito posso ter varias opçoes difirente, no caso de um TORCEDO DE TIME DE FUTEBOL, varios times pra um torcedor so, no caso CARRO varios acessorios para o mesmo, com formulario de cadastro, se alguem tiver ai e poder me enviar em zip ou rar fico fico agradecido. valew galera ate mais...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja corrigi, é que no exemplo ta tabela estava certo, só depois na tabela completa que eu devo ter duplicado sem querer, mas o proprio banco de dados nao deixaria cadastrar de novo a mesma tabela

 

 

banco de teste
CREATE TABLE usuario_time (

id_usuario smallint(5) unsigned NOT NULL default '0',

id_time smallint(5) unsigned NOT NULL default '0',

PRIMARY KEY (id_usuario, id_time)

)

 

CREATE TABLE usuarios (

id_usuario smallint(5) unsigned NOT NULL auto_increment,

usuario varchar(40) collate utf8_unicode_ci NOT NULL default '',

PRIMARY KEY (id_usuario)

)

 

INSERT INTO usuarios VALUES (1, 'Fabyo');

INSERT INTO usuarios VALUES (2, 'Adailton');

INSERT INTO usuarios VALUES (3, 'Erick');

INSERT INTO usuarios VALUES (4, 'Luiz');

INSERT INTO usuarios VALUES (5, 'Fernando');

 

 

CREATE TABLE times (

id_time smallint(5) unsigned NOT NULL auto_increment,

time varchar(40) collate utf8_unicode_ci NOT NULL default '',

PRIMARY KEY (id_time)

)

 

INSERT INTO times VALUES (1, 'Sao Paulo');

INSERT INTO times VALUES (2, 'Santos');

INSERT INTO times VALUES (3, 'Flamengo');

INSERT INTO times VALUES (4, 'Fluminense');

INSERT INTO times VALUES (5, 'Palmeiras');

INSERT INTO times VALUES (6, 'Vasco');

INSERT INTO times VALUES (7, 'Corinthians');

 

CREATE TABLE usuario_time (

id_usuario smallint(5) unsigned NOT NULL default '0',

id_time smallint(5) unsigned NOT NULL default '0',

PRIMARY KEY (id_usuario,id_time)

)

 

INSERT INTO usuario_time VALUES (1, 1);

INSERT INTO usuario_time VALUES (2, 5);

INSERT INTO usuario_time VALUES (3, 4);

INSERT INTO usuario_time VALUES (4, 3);

INSERT INTO usuario_time VALUES (5, 6);

 

obs: para quem usa mysql muito antigo nao funcionara esse banco dai nesse caso monte um banco sem o unicode

 

qualquer duvida só perguntar

Porque você criou 2 vezes a tabela usuario_time? não entendí...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Where filtra a busca por um ou mais campos. Ex:

 

Select * From tabela Where nome = 'Beraldo' And cidade = 'Curitiba';

 

O Inner Join refere-se ao campo que faz a ligação entre as duas tabelas. Ex:

 

Select t1.id, t2.campoX From tabela1 as t1 Inner Join tabela2 as t2 On t1.id = t2.id_usuario Where t1.nome = 'Beraldo';

 

Nesse caso, o campo id_usuario da tabela 2 está ligado ao campo id da tabela 1. O que vem logo após o On define a ligação entre os campos.

 

Mais detalhes:

http://dev.mysql.com/doc/refman/5.1/en/join.html

http://dev.mysql.com/doc/refman/5.1/en/select.html

 

Se eu falei algo errado, podem corrigir! :P

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo exemplo só com where:

 

Select t1.id, t2.campoX From tabela1 as t1, tabela2 as t2 WHERE (t1.id = t2.id_usuario) AND (t1.nome = 'Beraldo');

Mas qual a vantagens em fazer com o inner join? É mais rápido?

Acho que ainda não entendi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce precisa entender, mas para isso você tem que saber para que serve e como usar:

 

INNER JOIN

LEFT OUTER JOIN

RIGHT OUTER JOIN

 

tem coisas que da para voce fazer com uma simples comparação tabela1.id = tabela2.id, mas tem coisas nao da

vai depender muito das complexibilidades de suas tabelas e do tipo de resultados que você quer tirar delas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Excelente iniciativa Fabyo, gostei muito da "aula"

 

Só que gostaria que se possivel fosse você explicasse tambem como faria pra agrupar varios times ao mesmo usuario.

 

Exemplo.

 

Quando eu inclui um novo time para o usuario Fabyo ficou assim

 

"Fabyo torce para o time Sao Paulo"

"Fabyo torce para o time Botafogo" (Eu tambem. hehe)

 

A pergunta é nao teria como listar assim:

 

Fabyo torce para Sao Paulo, Botafogo... etc

 

Pois peguei seu exemplo e estou fazendo uma listagem de um Menu atraves de BD

 

Exemplo.

 

Menu

 

Grupo1

Subgrupo1

Subgrupo2

 

Grupo2

Subgrupo3

SubGrupo4

 

 

A minha tabela esta igual a sua... a unica diferença eh que mudei o nome time pra "grupo" e usuario pra "subgrupo"

 

 

Grato pela atencao e pela aula mais uma vez! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem sim, assim que der eu faço um exemplo pra você ver e se der ainda hj t+

:rolleyes: eu nao tinha esperanças que você responderia pois fazia tempo que o topico nao era citado, mas fiquei bastante feliz por saber que ainda existem pessoas como você dispostas a ajudar compartilhando seus conhecimentos com toda paciencia do mundo! (So podia ser Sao Paulino mesmo) http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Valeu mesmo!Aguardo ancioso! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem sim, assim que der eu faço um exemplo pra você ver e se der ainda hj t+

:rolleyes: eu nao tinha esperanças que você responderia pois fazia tempo que o topico nao era citado, mas fiquei bastante feliz por saber que ainda existem pessoas como você dispostas a ajudar compartilhando seus conhecimentos com toda paciencia do mundo! (So podia ser Sao Paulino mesmo) http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Valeu mesmo!Aguardo ancioso! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa desculpe a demora é porque ta uma correria aqui, mas beleza

 

entao o que você quer fazer da para fazer de varias maneiras diferentes, aproveitando o mesmo tutorial sem precisar mudar o select voce pode fazer assim dentro do while:

 

while($l = mysql_fetch_array($re))
{
$usuarios[$l["usuario"]][] = $l["time"];
}

 

para testar:

echo "<pre>";

print_r($usuarios);

echo "</pre>";

 

dai depois você ve como quer mostrar esses dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa desculpe a demora é porque ta uma correria aqui, mas belezaentao o que você quer fazer da para fazer de varias maneiras diferentes, aproveitando o mesmo tutorial sem precisar mudar o select voce pode fazer assim dentro do while:

while($l = mysql_fetch_array($re)){	$usuarios[$l["usuario"]][] = $l["time"];}
para testar:echo "<pre>";print_r($usuarios);echo "</pre>";dai depois você ve como quer mostrar esses dados
Olá amigo, saiu tipo assim...Como faço pra arrumar esse codigo ? <_< Array( [Fabyo] => Array ( [0] => Sao Paulo [1] => Santos ) [Adailton] => Array ( [0] => Palmeiras ) [Erick] => Array ( [0] => Fluminense ) [Luiz] => Array ( [0] => Flamengo ) [Fernando] => Array ( [0] => Vasco ))o meu codigo ficou assim:<?$cn = mysql_connect("localhost", "root", "");mysql_select_db("juncao");$re = mysql_query("SELECT times.time, usuarios.usuarioFROM (times INNER JOIN usuario_time ON times.id_time = usuario_time.id_time) INNER JOIN usuarios ON usuario_time.id_usuario = usuarios.id_usuario");mysql_close($cn);while($l = mysql_fetch_array($re)){ $usuarios[$l["usuario"]][] = $l["time"];}echo "<pre>";print_r($usuarios);echo "</pre>";?>Grato mais uma vez pela atencao!

Compartilhar este post


Link para o post
Compartilhar em outros sites

So para ficar claro...o Fabyo torce para o fantastico Internacional de Bebedouros http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

 

tem sim, assim que der eu faço um exemplo pra você ver e se der ainda hj t+

:rolleyes: eu nao tinha esperanças que você responderia pois fazia tempo que o topico nao era citado, mas fiquei bastante feliz por saber que ainda existem pessoas como você dispostas a ajudar compartilhando seus conhecimentos com toda paciencia do mundo! (So podia ser Sao Paulino mesmo) http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Valeu mesmo!

 

Aguardo ancioso! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

HAuhUAHuhA... o Inter de Beira Rio ?! ou é outro Inter de SP ?!

 

Acho que no fundo no fundo ele é Sao Paulino! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, saiu tipo assim...Como faço pra arrumar esse codigo ? Array([Fabyo] => Array([0] => Sao Paulo[1] => Santos)[Adailton] => Array([0] => Palmeiras)[Erick] => Array([0] => Fluminense)[Luiz] => Array([0] => Flamengo)[Fernando] => Array([0] => Vasco))o meu codigo ficou assim:<?$cn = mysql_connect("localhost", "root", "");mysql_select_db("juncao");$re = mysql_query("SELECT times.time, usuarios.usuarioFROM (times INNER JOIN usuario_time ON times.id_time = usuario_time.id_time) INNER JOIN usuarios ON usuario_time.id_usuario = usuarios.id_usuario");mysql_close($cn);while($l = mysql_fetch_array($re)){$usuarios[$l["usuario"]][] = $l["time"];}echo "<pre>";print_r($usuarios);echo "</pre>";?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sou Sao Paulino sim

 

entao Robertson o exemplo que te passei esta certo, você tem um array com os usuario e seus times

agora você usa o array da forma que achar melhor no seu sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sou Sao Paulino simentao Robertson o exemplo que te passei esta certo, você tem um array com os usuario e seus timesagora você usa o array da forma que achar melhor no seu sistema.

Grande Fabyo,Cara eu já tentei de tudo pra sair direitinho sem aqueles ARRAY no codigo mas nao conseguidiz ai so um exemplo de como ficaria pra sair - FabyoSao PauloSantos- FernandoCorinthias... etcsem aqueles codigos no meio do printAgradeço desde já pela grande ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.