2

mysql で 2 つのテーブルにアクセスし、両方のテーブルのフィールドを使用したいと考えていました。両方のテーブルを一致させるためにinnerjoinを使用しましたが、両方のテーブルのフィールドを取得する方法を知りたいのですが、両方のテーブルのフィールド名が同じで値が異なるためです。これが私のクエリです...

$query1 = mysql_query("SELECT facilitator.FacID, facilitator.email, assigned.email FROM facilitator INNER JOIN assigned ON facilitator.FacID = assigned.FacID WHERE assigned.email = '$stuemail' AND facilitator.active = '1'") or die($query."<br/><br/>".mysql_error());
            while($line1=mysql_fetch_array($query1,MYSQL_ASSOC)){
                $faci= $line1['FacID'];
                $facemail = $line1['email'];
                $stumail2 = $line1['email'];
.............code goes on.............. 

両方のメール フィールドの値を取得したいのですが、どうすればよいでしょうか。私が $stumail2 に書いたことは間違っていると確信しています。私を助けてください。

4

3 に答える 3

3

いくつかのオプションがあります。

1 つ目は、MySQL でフィールド エイリアスを割り当てることです。

SELECT
    facilitator.FacID,
    facilitator.email AS facilitatorEmail,
    assigned.email AS assignedEmail
    ....

2 つ目は、 を使用してmysql_fetch_array()いるため、インデックスでフィールドにアクセスすることです。facilitator.emailフィールドには indexと1indexassigned.email2あるため、次を使用できます。

$facemail = $line1[1];
$stumail2 = $line1[2];

または、デフォルトでは、MySQLは重複する列名ごとに ( から始まる) 増分番号を追加する必要があります。したがって、列にアクセスする1ために使用できるはずです。email1assigned.email

$facemail = $line1['email'];
$stumail2 = $line1['email1'];
于 2012-10-09T18:35:50.490 に答える
0

クエリに「as」キーワードが必要なだけです。

$query1 = mysql_query("SELECT facilitator.FacID, facilitator.email as fac_email, assigned.email as assign_email FROM facilitator INNER JOIN assigned ON facilitator.FacID = assigned.FacID WHERE assigned.email = '$stuemail' AND facilitator.active = '1'") or die($query."<br/><br/>".mysql_error());
        while($line1=mysql_fetch_array($query1,MYSQL_ASSOC)){
            $faci= $line1['FacID'];
            $facemail = $line1['fac_email'];
            $stumail2 = $line1['assign_email'];
于 2012-10-09T18:38:28.143 に答える
0

列にエイリアスを使用して、それらを明確にすることができます。次に例を示します。

SELECT facilitator.FacID, 
    facilitator.email as FacilitatorEmail, 
    assigned.email as AssignedEmail
FROM ...
于 2012-10-09T18:35:25.107 に答える