Jump to content


Photo

Dúvida Em Consulta


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

#1 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 10/07/2008, 09:39

Senhores,

Tenho um probleminha aqui, naum consigo fazer uma consulta :wacko:

Tenho duas tabelas: impressoras, e cartuchos
impressoras:
id: int
preto: int
colorido: int (null)
marca: int
modelo: varchar

cartuchos:
id: int
modelo: varchar
cor: bool
Como que eu faço uma pesquisa pra retornar as informações da impressora, mas ao invés de mostrar o código do cartucho, mostrar o modelo do mesmo:
SELECT impressoras.*,cartuchos.modelo FROM impressoras,cartuchos WHERE impressoras.preto=cartuchos.id
Isso foi o mais perto que eu cheguei, o problema é q tb preciso buscar o modelo do cartucho colorido, e sabendo que ele pode ser nulo (nesse caso, óbvio, não busca o modelo)

tenquis!

Edição feita por: Falci, 10/07/2008, 09:40.

<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#2 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

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

Posted 10/07/2008, 09:56

SELECT [...] FROM impressoras JOIN cartuchos ON cartuchos.id = impressoras.preto OR cartuchos.id = impressoras.colorido [...]
Mas já aviso que não entendi direito tua situação! Em todo caso... o caminho das pedras é esse.

#3 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 10/07/2008, 10:45

Posted Image

hehe.. desenhei no visio pra ver se fica mais claro...

Olha, a tabela impressoras tem dois campos FK, que buscam dados da tabela cartuchos..
Posted Image
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#4 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

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

Posted 10/07/2008, 10:50

Aham, legal :D
Mas e aí? O Join funcionou?

#5 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 10/07/2008, 10:56

Funcionou +/-...

Quando uma impressora tem cartucho preto e colorido, ele traz dois resultados, um com o preto, outro com o colorido..

Não tem como fazer em um só?
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#6 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

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

Posted 10/07/2008, 11:17

Ué, mas quando tiver preto E colorido você não quer saber o modelo dos dois cartuchis? Isso que eu tinha entendido...

#7 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 11/07/2008, 08:03

Intaum, eu preciso fazer uma lista, com todas as impressoras, e os respectivos cartuchos que ela usa.
Se eu usar essa pesquisa aih, ele vai trazer duas vezes a mesma impressora, um só com o cartucho preto, outra só com o colorido. Aih complica pra mim exibir na tabela.
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#8 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

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

Posted 11/07/2008, 09:08

Nada que um if não resolva, mas.... :ponder: vc pode duplicar o JOIN:
SELECT [...], cart_preto.coluna, cart_color.coluna
FROM impressoras 
LEFT JOIN cartuchos cart_preto ON cart_preto.id = impressoras.preto 
LEFT JOIN cartuchos cart_color ON cart_color.id = impressoras.colorido


#9 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 11/07/2008, 09:49

Tenquis boirock

No fim, ficou assim:
SELECT impressoras.id,marcas.marca,impressoras.modelo, cart_preto.modelo p, cart_color.modelo c
FROM marcas,impressoras LEFT JOIN cartuchos cart_preto ON cart_preto.id = impressoras.preto
LEFT JOIN cartuchos cart_color ON cart_color.id = impressoras.colorido
WHERE impressoras.marca=marcas.id

<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>




0 user(s) are reading this topic

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

IPB Skin By Virteq