Question

Comment référencez-vous les colonnes de table1 à 2 dans le tableau 2

J'ai créé un tableau ' État ' avec 50 lignes exactes

.

essayant d'établir une relation (weddingState, contactState) dans le tableau Wedding '

C’est la déclaration que j’ai créée, mais elle rejoint uniquement le WeddingState supérieur - ne semble pas se soucier de la connexion INNER ci-dessous ...

SELECT *

DE mariages

INNER JOIN déclare comme s1 lors des mariages. WeddingState = s1.StateId // état du mariage

INNER JOIN déclare comme s2 ON weddings.ContactState = s2.StateId // état de contact de la mariée

WHERE weddings.weddingid = "094829292"

Était-ce utile?

La solution

Je suppose que vous les récupérez en PHP ou quelque chose du genre, et que vous récupérez les lignes dans un tableau de hachage, indexé par le nom du champ. Bien sûr, il ne peut y avoir qu'un seul élément dans un hachage avec une clé donnée. Vous devez donc utiliser des alias de colonne pour vous assurer que les colonnes portant le même nom se voient attribuer un alias distinct.

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";

Votre tableau de hachage aura désormais les clés " wstate " et "état". Sans aliaser ces colonnes, l’une écrasera toujours l’autre.

Autres conseils

Et qu'obtenez-vous pour votre résultat qui vous amène à votre conclusion?

Cela va semer la confusion, car les noms de champs dans les deux jointures, ainsi que certains noms de champs dans la table primaire, sont identiques. C'est une très bonne idée de choisir explicitement vos colonnes de sortie et de leur donner des alias significatifs.

Que diriez-vous de:

SELECT s1.StateName, s2.StateName

DE mariages

INNER JOIN déclare que s1 ON weddings.WeddingState = s1.StateId // état du mariage

INNER JOIN déclare comme s2 ON weddings.ContactState = s2.StateId // état de contact de la mariée

WHERE weddings.weddingid = "094829292"

Merci Bill, j'ai également ajouté le nom d'état

SÉLECTIONNER w. *,

s1.StateId AS WeddingStateId,

s1.StateName AS WeddingStateName,

s2.StateId AS ContactStateId,

s2.StateName AS ContactStateName

DE mariages comme w

INNER JOIN indique AS s1 sur w.WeddingState = s1.StateId

INNER JOIN indique AS s2 ON w.ContactState = s2.StateId

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top