juntar 2 colunas da tabela 1 Tabela 2
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"
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