Mysql Left Join是正确的吗?

时间:2015-12-17 12:51:58

标签: mysql

这是我的Mysql LEFT加入代码。  它显示所有值。  我只是想确认它正确显示2个表的所有值

<?php

//connect database 
$con= mysql_connect("localhost","root","") or die(mysql_error());

// select database 

mysql_select_db("mysql joins",$con) or die(mysql_error());
$query = "SELECT orders.o_id, persons.p_id ".
"FROM persons ".

“LEFT JOIN orders”。     $ result = mysql_query($ query)或die(mysql_error());

// print out the contents of each row
while($row = mysql_fetch_array($result)){
echo $row['o_id']. " - ". $row['p_id'];
echo "<br />";
}
      ?>

facebook中的一些人说错了我问他如何显示值,如果错误

   IT displays --1 - 1 
                 2 - 2 the column values.

我想知道它导致mysql连接使购物车完整。

2 个答案:

答案 0 :(得分:1)

您的代码中没有左连接

左连接看起来像这样:

$query = "SELECT orders.o_id, persons.p_id FROM orders left join  persons  on orders.o_id = persons.p_id ";

答案 1 :(得分:0)

您的加入条件为orders.o_id = persons.p_id,但不知道数据模型这只是猜测,但我认为o_id是订单的唯一ID,而p_id是个人的唯一ID。所以两个完全不同的东西&#34;。如果有o_id = 1的订单以及p_id = 1的人,您的加入会给您一个结果,此o_id和p_id相等 BUT 您比较的逻辑错误。< / p>

您可能会有一个类似orders.person_id(或类似内容)的字段,而不是连接:   WHERE orders.person_id = persons.p_id

除此之外,你的sql语句中没有左连接。通过上述假设,左连接将是:

SELECT 
orders.o_id, persons.p_id 
FROM orders 
left join  persons on orders.person_id = persons.p_id