0

2 つのテーブルに共通のフィールド名がある左結合を行う 2 つのテーブルに対してクエリを実行しようとしています。私のあいまいな理解では、MYSQL は特定のテーブルのイニシャルを覚えていないので、エイリアスを使用する方がよいということです。ただし、次のクエリは、別名 muserid で不明な列エラーをスローしています。

修正方法に関する提案をいただければ幸いです。

$sql= "SELECT c.id as cid, c.*,m.userid as muserid
FROM `contacts` c
LEFT JOIN `mycontacts` m
ON cid = personid
WHERE muserid = '$userid' "; 
4

1 に答える 1

2

これについてではありませんJOIN。MySQL では、SELECTステートメントはWHEREandFROM句の後に評価されます。これは、句でエイリアスを参照できないためですWHERE。代わりにこれを試してください:

SELECT *
FROM
(
    SELECT c.id as cid, c.*,m.userid as muserid
    FROM `contacts` c
    LEFT JOIN `mycontacts` m ON c.id = m.personid
) t
WHERE muserid = '$userid';

MySQL クエリの実行順序は次のとおりです1 :

  • FROM 句
  • WHERE句
  • GROUP BY 句
  • HAVING 句
  • SELECT句
  • ORDER BY 句。

1: MySQL クエリの実行順序

于 2012-11-17T12:00:27.423 に答える