SQL表连接显示更多字段

时间:2018-04-23 07:51:05

标签: php mysql sql

我正在学习SQL并需要一些建议。这当前显示我需要它,但我也想要回显tw.model_id和model.id之间没有匹配的所有其他字段。如果有多个customer_name,我将如何创建一个列表,非常感谢任何建议。

$sql = "SELECT * FROM tw
INNER JOIN model
ON model.id=tw.model_id
WHERE tw.completed = 1 AND tw.stock = 0
ORDER BY model.id"; 

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


echo "<table cellspacing='0px' cellpadding='10px' align='center' width='100%'><tr>";

while($row = $result->fetch_assoc()) {

    echo "<td width='7%' style='border:1px solid grey;'> " . $row["model_name"] . "<br />" . $row["quantity"] . "<br />";

    echo $row["customer_name"] . "<br /></td>";

}

 echo "</tr></table>";

需要显示如下:

|Model1     |Model2  |Model3
|10         |4       |6
|Joe Bloggs |        |Jane Doe

目前它不显示Model2列,因为它没有模型ID和客户名称之间的匹配。

表格布局

模型

id
model_name
quantity

TW

id
model_name
customer_name
model_id

model_name匹配两个表 model.id匹配tw.model_id

2 个答案:

答案 0 :(得分:1)

您需要外部联接。内连接必须有匹配。

这可能会有所帮助:

https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

答案 1 :(得分:0)

将您的查询更改为:

SELECT * FROM tw
OUTER JOIN model
ON model.id=tw.model_id
WHERE tw.completed = 1 AND tw.stock = 0
ORDER BY model.id

外部联接将完全满足您的需求,即&#34;我还想回应tw.model_id和model.id&#34;之间不匹配的所有其他字段。