[英]How canI join a table with itself for a query in a PHP script, and tell the script which column to pick from which table?
对不起,如果标题令人困惑,但我会解释。 我在 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>";
这是代码的重要部分。 但是,当我打印出结果时,PHP 仅从两列上从“c.co_name”返回的数据。 在 SQL 中很容易告诉他它实际上是 2 个表,因为我使用别名。 但是当我尝试返回结果时,我怎么能在 php 脚本中做到这一点。 这部分正是:
echo "<table border = '1'; align ='center'><tr><th>Company name</th><th>Company name</th></tr>";
您实际上有表别名( c和cc )。 所以你的属性需要别名。 我的意思是这样的:
$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>";
希望能帮到你...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.