php - MySQL left join 不使用 AS 关键字

标签 php mysql

我喜欢为关联选择使用 self 解释的名称,有时甚至必须避免重复,所以我经常使用 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 的无用数据,因为它还获取了字段userIDname,而我并没有这样做不需要。它还会获取 id 两次。

所以我试着把它改成;

$sql = "SELECT 
        projects.id as projects_id
       FROM projects";

随着上线成为

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

输出:

problem

这很奇怪,因为在 projects 中只有一行,但在 projectfiles 中有 3 行具有该 projectID...我做错了什么?

最佳答案

仅从 projectfiles 表中选择:

$sql = "SELECT projectfiles.*,
        projects.id as projects_id
       FROM projects";

// rest of the code is the same

更新

$sql = "SELECT projectfiles.* FROM projects";
// rest of the code is the same

关于php - MySQL left join 不使用 AS 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10945794/

相关文章:

php - 是否可以从单个单元格获取数组?

php - 继续购物 URI

php - 使用未定义的常量 SIGKILL - 假定为 'SIGKILL'

php - 错误 : “Origin null is not allowed by Access-Control-Allow-Origin” when using dataType text/html accessing a php file using JQuery's ajax method

php - 从另一台设备访问我的虚拟主机中的网页

MySQL 比较数据库并添加缺失的列

PHP根据输入回显数据库中的所有数据

mysql - Ruby 1.9、MySQL 字符编码问题

mysql - Laravel 5.4 连接两个表时出错

mysql - 如何从表中删除不重复的行?