2016-10-13 58 views
0

我有查詢SQL搜索。我有兩個表是內連接。這是我的表:內部連接兩個外鍵在一張表中

table_order 
 
------------ 
 
id_order id_user_order id_user_taker status 
 
1   2    3    done 
 
2   2    4    done 
 

 
table_user 
 
-------------- 
 
id_user name 
 
1   Alex 
 
2   Jason 
 
3   Danis 
 
4   Lorent

,我將內連接是這樣的:

<?php 
 
include'conn.php' 
 
$qry = $conn->query("select table_order.*, table_user.name AS order_name, table_user.name AS taker_name FROM table_order INNER JOIN table_user ON table_user.id_user = table_order.id_user_order INNER JOIN table_user ON table_user.id_user = table_order.id_user_taker "); 
 

 
while($data = $qry->fetch_assoc()){ 
 
echo $data['order_name'] . " " . $data['taker_name']; 
 
} 
 

 
?>

,但不能顯示。請解決我的問題傢伙。非常感謝

+0

你可以更具體一點嗎? –

回答

2

當你需要加入同一個表中的兩個或更多的時間你必須使用適當的別名表

$qry = $conn->query("select 
       table_order.* 
      , a.name AS order_name 
      , b.name AS taker_name 
      FROM table_order 
      INNER JOIN table_user as a ON a.id_user = table_order.id_user_order 
      INNER JOIN table_user as b ON b.id_user = table_order.id_user_taker "); 
+0

謝謝你們,它對我很有用。 。 :) –

0

你需要的,如果你想在查詢中使用相同的表,曾多次使用別名,那麼表名:

$qry = $conn->query("select table_order.*, table_user_o.name AS order_name, table_user_t.name AS taker_name 
FROM table_order INNER JOIN table_user table_user_o ON table_user_o.id_user = table_order.id_user_order 
     INNER JOIN table_user table_user_t ON table_user_t.id_user = table_order.id_user_taker"); 
0

查詢一些變化

select table_order.*, table_user.name AS order_name, table_user.name AS taker_name FROM 
      table_user 
      INNER JOIN table_order ON table_order.id_user_order = table_user.id_user 
      INNER JOIN table_order ON table_order.id_user_taker = table_user.id_user 
0

看起來你需要訂單和接受者的姓名以及table_order中的字段。如果是這種情況,那麼你需要使用'LEFT JOIN'。

select too.*, tuo.name AS order_name, tut.name AS taker_name FROM table_order too left join table_user tuo on tuo.id_user=too.id_user_order left join table_user tut on tut.id_user=too.id_user_taker 
0

試試下面的查詢

select table_order.*, user.name FROM table_user user 
     INNER JOIN table_order ON table_order.id_user_order = user.id_user 
     where table_order.id_order=1