如何在PHP脚本中将一个表与其自身连接起来进行查询,并告诉脚本从哪个表中选择哪个列?

如何在PHP脚本中将一个表与其自身连接起来进行查询,并告诉脚本从哪个表中选择哪个列?,php,mysql,sql,Php,Mysql,Sql,对不起,如果标题不清楚,我会解释的。 我在PhpMyAdmin中有一个数据库,我正在尝试对一个与其连接的表进行查询,在那里我为拥有相同供应商的公司提取成对的公司名称,没有重复。 我的桌子是: Suppliers(id_sup, sup_name) Companies(id_co, co_name) Objects(id_obj, obj_name) Deliveries(id_sup, id_co, id_obj) 这是我的密码: $sql = "SELECT DISTINCT c.co_na

对不起,如果标题不清楚,我会解释的。 我在PhpMyAdmin中有一个数据库,我正在尝试对一个与其连接的表进行查询,在那里我为拥有相同供应商的公司提取成对的公司名称,没有重复。 我的桌子是:

Suppliers(id_sup, sup_name)
Companies(id_co, co_name)
Objects(id_obj, obj_name)
Deliveries(id_sup, id_co, id_obj)
这是我的密码:

$sql = "SELECT DISTINCT c.co_name, cc.co_name
        FROM Deliveries d 
            INNER JOIN Companies c ON d.id_co = c.id_co, 
                                Deliveries dd 
            INNER JOIN Companies cc ON dd.id_co = cc.id_co

        WHERE d.id_obj = dd.id_obj 
        AND d.id_sup = dd.id_sup 
        AND d.id_co < dd.id_co;";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    echo "<table border = '1'; align ='center'><tr><th>Company name</th><th>Company name</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row["co_name"]."</td><td>".$row["co_name"]."</td></tr>";
    }
    echo "</table>";
$sql=“选择不同的c.co\u名称,cc.co\u名称
从交货到交货
内部连接公司c ON d.id\u co=c.id\u co,
交货日期
内部加入公司cc ON dd.id\u co=cc.id\u co
其中d.id_obj=dd.id_obj
d.id\u sup=dd.id\u sup
和d.id_coquery($sql);
如果($result->num_rows>0){
呼应“公司名称公司名称”;
//每行的输出数据
而($row=$result->fetch_assoc()){
回显“$row[“co_name”]。$row[“co_name”]。”;
}
回声“;
这是代码的重要部分。但当我打印结果时,PHP仅从两列上的“c.co_name”返回的数据中进行。在SQL中,很容易告诉他实际上是两个表,因为我使用了alias。但是,当我尝试返回结果时,如何在PHP脚本中执行此操作。这部分内容确切地说:

echo "<table border = '1'; align ='center'><tr><th>Company name</th><th>Company name</th></tr>";
echo“公司名称公司名称”;

您实际上有表别名(ccc)。因此您的属性需要别名。我的意思是:

$sql = "SELECT DISTINCT c.co_name as nameA, cc.co_name as nameB
        FROM Deliveries d 
            INNER JOIN Companies c ON d.id_co = c.id_co, 
                                Deliveries dd 
            INNER JOIN Companies cc ON dd.id_co = cc.id_co

        WHERE d.id_obj = dd.id_obj 
        AND d.id_sup = dd.id_sup 
        AND d.id_co < dd.id_co";
echo "<tr><td>".$row["nameA"]."</td><td>".$row["nameB"]."</td></tr>";
$sql=“选择不同的c.co\u名称作为nameA,选择cc.co\u名称作为nameB
从交货到交货
内部连接公司c ON d.id\u co=c.id\u co,
交货日期
内部加入公司cc ON dd.id\u co=cc.id\u co
其中d.id_obj=dd.id_obj
d.id\u sup=dd.id\u sup
和d.id_co
稍后使用回音线,如下所示:

$sql = "SELECT DISTINCT c.co_name as nameA, cc.co_name as nameB
        FROM Deliveries d 
            INNER JOIN Companies c ON d.id_co = c.id_co, 
                                Deliveries dd 
            INNER JOIN Companies cc ON dd.id_co = cc.id_co

        WHERE d.id_obj = dd.id_obj 
        AND d.id_sup = dd.id_sup 
        AND d.id_co < dd.id_co";
echo "<tr><td>".$row["nameA"]."</td><td>".$row["nameB"]."</td></tr>";
echo“$row[“nameA”]。$row[“nameB”]。”;

希望它能帮助您…

MySQL SQL Server,而PHPMyAdmin不支持SQL Server。您实际使用的是什么?啊,好的,对不起。我正在通过Xampp使用MySQL和PHPMyAdmin。
echo“好的,谢谢你,我不知道。但是,还有,关于如何放置表别名的任何想法吗?:)我认为你有语法错误,所以…要想从PHP中获得错误,即使是在实时环境中,也可以将这4行添加到要调试
ini\u集('display\u errors',1);ini\u集('log\u errors',1)的任何基于
MYSQLI\u
的脚本的顶部;error_reporting(E_ALL);mysqli_report(mysqli_report_error | mysqli_report_STRICT);
。这将强制任何
mysqli_
错误生成一个异常,您可以在浏览器上看到该异常以及正常的PHP错误。