2015-12-17 4 views
-1

Это мой код для Mysql LEFT join. отображает все значения. я просто хочу, чтобы подтвердить его правильно его отображающие все значения 2 таблицыMysql Left Join правильный?

<?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 заказов». $ 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 />"; 
} 
     ?> 

Какой-то парень в фейсбуке сказал, что его неправильно, я спросил его, как он может отображать значения то, если его неправильно

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

Я хочу знать его причину MySQL присоединяется сделать корзину полной.

+3

нет соединения слева в коде – Jens

+1

да я забыл это после того, как от лиц «$ запроса =» SELECT persons.lastname, persons.firstname, заказы. orderno » « ОТ лиц » « Правые заказы на заказ ». « ON orders.o_id = persons.p_id »; $ result = mysql_query ($ query) или die (mysql_error()); – varunkumar

+1

и внутреннее соединение тоже отлично $ query = "SELECT persons.lastname, person.firstname, orders.orderno". "ОТ лиц". "INNER JOIN orders". "ON orders.o_id = persons.p_id"; $ result = mysql_query ($ query) или die (mysql_error()); // распечатывает содержимое while ($ row = mysql_fetch_array ($ result)) { \t echo $ row ['firstname']. «-». $ Строки [ 'фамилия']; \t echo "
"; } – varunkumar

ответ

0

Ваше условие соединение orders.o_id = persons.p_id, не зная модели данных, это только предположение, но я предположил бы, что o_id - уникальный идентификатор порядка и p_id - уникальный идентификатор человека. Итак, две совершенно разные вещи. В случае, если есть заказ с o_id = 1, а также лицом с p_id = 1, ваше соединение даст вам результат таким образом, что o_id и p_id равны BUT Вы сравниваете логически ложно.

Вы можете иметь поле, как 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 
+0

спасибо очень много – varunkumar

1

нет левого соединение в коде

левых присоединиться выглядит так:

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

спасибо, что очень понравилось – varunkumar