Jump to content


Photo

Problemas Com Mysql


  • Faça o login para participar
17 replies to this topic

#1 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 23/01/2007, 10:03

Olá pessoal, tudo bem?

Bom, é o seguinte, estou com uma dúvida com SQL.

Quero selecionar 3 tabelas, ambas tem o mesmo campo (item_id).
Eu tentei:

$sql = mysql_query("SELECT * FROM armor, weapon, etcitem WHERE item_id = '1') or die(mysql_error());


E ele dá o seguinte erro: Column 'item_id' in where clause is ambiguous.

Uso o Mysql 5.

Espero ajuda.
Até mais ^_^

Edição feita por: _Dudu_1533, 23/01/2007, 10:04.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#2 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 23/01/2007, 10:16

Camarada...
Essse seu select pega todos os campos de três tabelas: armor, weapon, etcitem.
Provavelmente vc tem esse campo item_id em mais de uma delas.
O que você tem q fazer quando utiliza mais de uma tabela no mesmo select é passar o nome da tabela junto.
Por exemplo, ao invés de WHERE item_id = '1' vc pode usar WHERE armor.item_id = '1' ou WHERE weapon.item_id = '1', etc...

---- EDITADO ----
depois de postar vi isso que vc escreveu:

Quero selecionar 3 tabelas, ambas tem o mesmo campo (item_id).

tenta isso:
WHERE armor.item_id = '1' AND weapon.item_id = '1' AND etcitem.item_id = '1'
Mas se elas são relacionadas entre elas, é negócio você usar um JOIN... por vários motivos...

Acho que era isso... qualquer coisa posta aí!

[] Rafael :boxing:

Edição feita por: boirock, 23/01/2007, 10:18.


#3 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 23/01/2007, 10:22

Ele não deu erro, mais também não mostrou os registros...
Vê se eu errei:

$sql3 = mysql_query("SELECT * FROM armor, etcitem, weapon WHERE armor.item_id = '".$m[item_id]."' AND etcitem.item_id = '".$m[item_id]."' AND weapon.item_id = '".$m[item_id]."'") or die(mysql_error());


Até mais ^_^

Edição feita por: _Dudu_1533, 23/01/2007, 10:23.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#4 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 23/01/2007, 10:39

O campo item_id é string? Se for int passa sem aspas...
E outra, testa essa sentença num PhpMyAdmin da vida... pq até testei a sentença agora pra ter ctza q não te falei besteira, é isso aí mesmo... funciona.
Mas repito, se for relacionado é melhor usar join. bem melhor.

Se não der, cola um exemplo dos dados aí...

[] Rafael :boxing:

#5 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 23/01/2007, 10:47

Vou lhe passar o esquema correto.

Tenho a tabela items.
Tenho a tabela characters.

Dentro da tabela characters, eu tenho o campo obj_Id, que é o identificador do usuário.

Dentro da tabela items, eu tenho o campo owner_id que identifica os items cadastrados de um determinado usuário, tem outro campo, que salva o ID do Item.

O que eu quero é pegar o ID do item, e selecionar as 3 tabelas (Armor, Etcitem, Weapon) para identificar o nome do Item.

Entendeu?

Vê se ficou alguma dúvida.

Até mais ^_^

------------------------------------------------
Editando:

O campo item_id das 3 tabelas são INT.
Fiz no phpmyadmin, sem aspas, ele retornou "Conjunto Vazio";

SELECT * FROM armor, etcitem, weapon WHERE armor.item_id = 27 AND etcitem.item_id = 27 AND weapon.item_id = 27


Edição feita por: _Dudu_1533, 23/01/2007, 10:54.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#6 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 23/01/2007, 11:03

Ah sim... acho qeu entendi!
troca AND por OR.
Segundo a minha lógica (não testada, rs...) usando AND vc só encontraria resultado se as três tabelas tivessem esse item_id.
Usando o OR você vai encontrar resultado quando qualquer uma das três tabelas tiverem esse item_id.

Acho que vai te dar trabalho tratar esses dados recebidos depois... hehehe... mas é isso aí! Agora vai...

[] Rafael :boxing:

Edição feita por: boirock, 23/01/2007, 11:05.


#7 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 23/01/2007, 11:18

Se eu usar OR, ele trava o PC, não sei o por que...
Estranho demais.

Será que é pelo número de registros?
tem mais de 2000 registros dentro dessas 3 tabelas..

Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#8 Noturno

Noturno

    12 Horas

  • Usuários
  • 183 posts
  • Sexo:Não informado

Posted 23/01/2007, 11:36

Vc rodou no phpmyadmin e trava?
Tenta trazer só uma coluna ao inves de *.
As Tabelas são indexadas?

Faz um teste, tenta assim:

SELECT armor.item_id, 
etcitem.item_id,
weapon.item_id
 FROM armor, etcitem, weapon 
WHERE 
armor.item_id = 27 OR
etcitem.item_id = 27 OR
weapon.item_id = 27

"Não há maior demonstração de insanidade do q fazer a mesma coisa, da mesma forma, dia após dia, e esperar resultados diferentes"
MCP .NET WebApplications C#
MCP SQL Server 2000
Desenvolvedor Delphi/PHP

#9 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 23/01/2007, 11:45

Travou tudo...
:(

Até mais ^_^

Edição feita por: _Dudu_1533, 23/01/2007, 11:45.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#10 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 23/01/2007, 13:02

Cara... pergunta de quem tá fora:
Não teria como vc criar uma tabela itens com um campo que identifica se o item é weapon, armor ou etcitem?

Isso de travar é estranho... 2000 registros pra SQL é praticamente nada... :huh:
Quem administra o banco é você ou vocÊ acessa o banco de algum servidor?

[] :boxing:

#11 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 24/01/2007, 12:09

Aqui no meu PC...

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#12 Noturno

Noturno

    12 Horas

  • Usuários
  • 183 posts
  • Sexo:Não informado

Posted 24/01/2007, 16:11

Então verifique o seu computador kra, pq como o "boirock" disse 2000 registros não é nada... é fixinha.

Pode ser algum problema de processamento, vc fez o teste no phpmyadmin ou na aplicação(script)?
Se for na aplicação(script) talvez vc esteja entrando em algum tipo de loop infinito na hr de printar dados ou algo do tipo, sei lá.
"Não há maior demonstração de insanidade do q fazer a mesma coisa, da mesma forma, dia após dia, e esperar resultados diferentes"
MCP .NET WebApplications C#
MCP SQL Server 2000
Desenvolvedor Delphi/PHP

#13 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 24/01/2007, 16:31

Alguém ajuda aí..

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#14 Noturno

Noturno

    12 Horas

  • Usuários
  • 183 posts
  • Sexo:Não informado

Posted 24/01/2007, 16:46

Amigo vc está fazendo o que estou falando?
Por que não posta o resultado do que eu pedi e ai em cima desse resultado te digo o que fazer.
"Não há maior demonstração de insanidade do q fazer a mesma coisa, da mesma forma, dia após dia, e esperar resultados diferentes"
MCP .NET WebApplications C#
MCP SQL Server 2000
Desenvolvedor Delphi/PHP

#15 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 24/01/2007, 19:26

Noturno, testei no Phpmyadmin também, e o resultado é o seguinte:

Trava o PC, só consigo mecher depois de reiniciar.


Cara... pergunta de quem tá fora:
Não teria como vc criar uma tabela itens com um campo que identifica se o item é weapon, armor ou etcitem?

[] :boxing:


Sim, eu fiz isso, e deu certo, mais o problema é que não fui eu que desenvolvi as tabelas, elas são padrões do jogo. O jogo não insere dados no campo que identifica se é weapon, armor, item.

Se o jogo inserisse, aí tava tudo beleza, sem problemas algum.

Entendeu?


Até mais ^_^

Edição feita por: _Dudu_1533, 24/01/2007, 19:37.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq