2016-10-13 36 views
0

私は検索のためのクエリSQLを持っています。私は内部の結合になる2つのテーブルがあります。この私のテーブル:内部は2つの外部キーを1つのテーブルに結合します

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

:2つ以上の時間が同じテーブルを結合する必要がある

$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 
関連する問題