2017-04-14 30 views
-1

私は3つの行を持つテーブル情報を持っています:id、monter1、monter2。 Monter1とMonter2は、私が参加したいテーブルmonterzy(id、name、surname)からのidです。問題は、PHPでこれらの値を取得するための適切なクエリを作成できないことです。現在私は持っています:MySQLは同じテーブルから2回データを結合します

SELECT i.id 
    , m.name 
    , m.surname 
    FROM info i 
    JOIN monterzy m 
    ON i.monter1 = m.id; 

私はまた、monter2と対応する名前と姓を取得するためにそれを展開したいと思います。私はGoogleで検索しましたが、ASとの例がありましたが、どうやってそれを行うのか分かりません。ありがとう!

+0

可能な重複に参加左://stackoverflow.com/questions/4267929/whats-the-best-way-to-join-on-the-same-table-twice) –

答えて

0

あなたはあなただけのテーブルをエイリアスする必要が異なる別名

SELECT info.id, 
     m1.name as m1_name, m1.surname as m1_surname, 
     m2.name as m2_name, m2.surname as m2_surname 
FROM info 
INNER JOIN monterzy m1 ON info.monter1 = m1.id 
INNER JOIN monterzy m2 ON info.monter2 = m2.id 
0

で二回同じテーブルに参加する必要があります。つまり、同じテーブルの各結合に別のエイリアス(名前)を付けることで、クエリの残りの部分がどのクエリであるかを知ることができます。このような何か:

SELECT 
    info.id, 
    m1.name, 
    m1.surname, 
    m2.name, 
    m2.surname 
FROM 
    info 
    INNER JOIN monterzy AS m1 ON info.monter1 = m1.id 
    INNER JOIN monterzy AS m2 ON info.monter2 = m2.id 

お知らせ各参加方法はAS someAliasがちょうどこのクエリの目的のために結合テーブルに新しい名前を与えることがあります。そして、残りのクエリがテーブル名の代わりにエイリアスを参照する方法。

0

あなたはこのために、テーブルの別名を使用する必要があります:[二度同じテーブルに参加するための最良の方法は何?](HTTPを使用でき

SELECT info.id, m1.name as name1, m1.surname as surname1, m2.name as name2, m2.surname as surname2 
FROM info 
INNER JOIN monterzy m1 ON info.monter1 = m1.id 
INNER JOIN monterzy m2 ON info.monter2 = m2.id; 
0

SELECT 
    info.id, 
    m1.name, 
    m1.surname, 
    m2.name, 
    m2.surname 
FROM 
    info 
    INNER JOIN monterzy AS m1 ON info.monter1 = m1.id 
    LEFT JOIN monterzy AS m2 ON info.monter2 = m2.id 
関連する問題