私は連想選択に自己説明的な名前を使用するのが好きで、重複を避けるために必須であることさえあるため、AS キーワードを頻繁に使用します。しかし、左結合で問題が発生しています。
これは機能します:
$sql = "SELECT *,
projects.id as projects_id
FROM projects";
$sql .= " LEFT JOIN".
" (SELECT
projectfiles.id as projectfiles_id,
projectfiles.fileID as projectfiles_fileID,
projectfiles.projectID as projectfiles_projectID
FROM projectfiles
) AS projectfiles".
" ON projects.id = projectfiles_projectID";
projects
ただし、必要のないフィールドuserID
とも取得するため、からの役に立たないデータになってしまいname
ます。また、IDを2回取得しています。
だから私はそれを変更しようとしました;
$sql = "SELECT
projects.id as projects_id
FROM projects";
ONラインになってから
" ON projects_id = projectfiles_projectID";
しかし、それはエラーを与えましたUnknown column projects_id
だから私は試しました
" ON projects.projects_id = projectfiles_projectID";
しかし、それでも同じエラー
その後、実験を開始し、(テストとして)試しました
$sql = "SELECT id,name,userID FROM projects";
$sql .= " LEFT JOIN".
" (SELECT
projectfiles.id as projectfiles_id,
projectfiles.fileID as projectfiles_fileID,
projectfiles.projectID as projectfiles_projectID
FROM projectfiles
) AS projectfiles".
" ON projects.id = projectfiles_projectID";
そして驚いたことに、LEFT JOIN は何も拾っていないように見えました。
コード:
$sql = "SELECT id,name,userID FROM projects";
$sql .= " LEFT JOIN".
" (SELECT
projectfiles.id as projectfiles_id,
projectfiles.fileID as projectfiles_fileID,
projectfiles.projectID as projectfiles_projectID
FROM projectfiles
) AS projectfiles".
" ON projects.id = projectfiles_projectID";
$res = mysql_query($sql);
if(!$res) die(mysql_error());
if(mysql_num_rows($res) > 0)
{
$rownum = 0;
while($row = mysql_fetch_assoc($res))
{
print_r($row);
echo "<br/><br/>";
$rownum++;
}
}
出力:
projects
そのprojectIDで1行しかないのに3行しかないので、これは奇妙projectfiles
です...私は何が間違っていますか?