2017-09-16 46 views
0

私の見解では外来キーの価値を得ようとしています。しかし、私はそれを行う方法を知らない。私のテーブル構造は次のようである: 購買: requisition table外部キーから値を取得します。 MySQL。 PHP

ユーザー: User Table

REQUISITION_APPROVAL

requisition_approval table

私は購買依頼テーブルからすべての値を得た:

$qry = "SELECT * FROM requisition where created_by = '$uid'"; 
$result = $this->fetch($qry); 
return $result; 

しかし、それは外部キー値でIDを返します。私は、ユーザーの名前と要求のステータスを、要求の承認テーブルから取得します。どうやってやるの?あなたはおよそJOINS学ぶために探している

+0

データをフェッチするために 'join'を使います。あるいは 'FUNCTIONS'を使ってそれを行うことができます。 –

+0

**警告**:ユーザーデータがクエリ内で使用されるため、これには重大な[SQLインジェクションのバグ](http://bobby-tables.com/)があります。可能な限り**準備文**を使用してください。これらは[mysqli](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[PDO](http://php.net/manual/)で行うのはかなり簡単です。 en/pdo.prepared-statements.php)ここでユーザが提供するデータは '? 'または':name'のインジケータで指定され、後で 'bind_param'や' execute'を使ってデータを入力します。 ** '$ _POST'、' $ _GET'、または任意のユーザーデータを直接クエリに入れないでください。 – tadman

答えて

1

:あなたの例から

SELECT R.*, U.* 
FROM requisition R 
LEFT JOIN users U ON R.created_by=U.id 
WHERE R.created_by = '$uid'"; 

を、requisition_approvalテーブルが明確にリンクされていません。共通のフィールドが必要です

+0

請求とrequisition_approvalの関係は1対1です。 requisition_approvalテーブルにrequisition_idも追加する必要がありますか? – Anon

+0

はい、JOINを行い、データを取得するために共通のフィールドが必要です。 LEFT JOIN requisition_approval A ON A.id = R.requisition_id' –

+0

**オピニオン** 1対1の関係2つのテーブルは通常は無駄です。すべてのフィールドを1つのテーブルにマージする必要があります。 2つのテーブルに分ける本当の理由はありません。正規化に関する限り、それらは同じものです –

関連する問題