Pergunta

Como você referenciar colunas tabela1 para 2 colunas na tabela 2

Eu criei uma tabela ' Estado ' com 50 linhas exatas

tentando relacionar (weddingState, contactState) em ' Wedding ' table

Esta é a afirmação de que eu criei, mas ele só se junta ao topo WeddingState corretamente - parece não se importar com a junção interna abaixo ...

SELECT *

De casamentos

INNER JOIN estados como S1 ON casamentos. WeddingState = s1.StateId // estado do casamento

INNER JOIN estados como s2 ON weddings.ContactState = s2.StateId // estado do contato da noiva

WHERE weddings.weddingid = "094829292"

Foi útil?

Solução

Eu acho que você está recuperando estes em PHP ou algo assim, e você está buscando as linhas em um hash-array, fechado pelo nome do campo. É claro que só pode haver um elemento de um hash com uma determinada chave. Então, você precisa usar aliases de coluna para certificar-se colunas com o mesmo nome é dado um apelido diferente.

SELECT w.*, s1.StateID AS wstate, s2.StateId AS cstate
FROM weddings AS w
INNER JOIN states AS s1 ON w.WeddingState = s1.StateId //state of marriage
INNER JOIN states AS s2 ON w.ContactState = s2.StateId //contact state of bride
WHERE w.weddingid="094829292";

chaves Agora seu hash de-array terá "wstate" e "cstate". Sem aliasing estas colunas, sempre irá substituir o outro.

Outras dicas

E o que você está recebendo o seu resultado que o leva a sua conclusão?

Vai ser confuso para começar porque os nomes de campo nos dois junta-se, além de alguns dos nomes de campo na tabela primária, são idênticos. É realmente uma boa idéia para escolher explicitamente suas colunas de saída e dar-lhes aliases significativas.

Como sobre: ??

SELECIONAR s1.StateName, s2.StateName

De casamentos

INNER JOIN estados como S1 ON weddings.WeddingState = s1.StateId // estado do casamento

INNER JOIN estados como s2 ON weddings.ContactState = s2.StateId // estado do contato da noiva

WHERE weddings.weddingid = "094829292"

Graças Bill, eu adicionei o StateName bem

SELECT w. *,

s1.StateId AS WeddingStateId,

s1.StateName AS WeddingStateName,

s2.StateId AS ContactStateId,

s2.StateName AS ContactStateName

De casamentos AS w

INNER JOIN Unidos como S1 ON w.WeddingState = s1.StateId

INNER JOIN Unidos como s2 ON w.ContactState = s2.StateId

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top