質問

table1の列をtable 2の2つの列にどのように参照しますか

50個の正確な行を持つテーブル「 State 」を作成しました

Wedding 」テーブルでの関連付け(weddingState、contactState)の試行

これは私が作成したステートメントですが、トップ WeddingState に正しく結合するだけです-その下の内部結合は気にしないようです...

選択*

結婚式から

INNER JOINは、結婚式でs1と表示します。 WeddingState = s1.StateId //結婚の状態

INNER JOINは、s2 ON weddings.ContactState = s2.StateId //花嫁の連絡先の状態として記載します

WHERE weddings.weddingid =" 094829292"

役に立ちましたか?

解決

これらをPHPなどで取得していて、フィールド名をキーとするハッシュ配列で行をフェッチしていると思います。もちろん、特定のキーを持つハッシュには1つの要素しか存在できません。そのため、列のエイリアスを使用して、同じ名前の列に明確なエイリアスを割り当てる必要があります。

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

これで、ハッシュ配列にキー" wstate"が追加されます。および「cstate」。これらの列にエイリアスを設定しないと、一方が常に他方を上書きします。

他のヒント

そして、あなたが結論に導く結果に対して何を得ていますか?

2つの結合のフィールド名と、プライマリテーブルのフィールド名の一部が同一であるため、スターターにとって混乱を招きます。出力列を明示的に選択し、意味のあるエイリアスを指定することは非常に良い考えです。

方法:

SELECT s1.StateName、s2.StateName

結婚式から

INNER JOINは、s1 ON weddings.WeddingState = s1.StateId //婚state状態

INNER JOINは、s2 ON weddings.ContactState = s2.StateId //花嫁の連絡先の状態として記載します

WHERE weddings.weddingid =" 094829292"

ビルに感謝、StateNameも追加しました

SELECT w。*、

s1.StateId AS WeddingStateId,

s1.StateName AS WeddingStateName,

s2.StateId AS ContactStateId,

s2.StateName AS ContactStateName

ウエディングASからw

内部結合は、w.WeddingState = s1.StateIdとしてs1としてASを宣言します

INNER JOINは、s.2でASを示しますw.ContactState = s2.StateId

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top