2012-03-22 15 views
2

customersqueriesという2つのテーブルを結合しています。各テーブルのSQLへのSQL結合

私はテーブルからfull_namequeriesテーブルからを取得しています。

SQL結合の結果を、データの元のテーブルに対応する配列に分割することが可能かどうか疑問に思っていますか?たとえば:現時点では

$STH = $DBH->prepare("SELECT queries.description, customers.full_name FROM queries INNER JOIN customers ON queries.customer_id = customers.id"); 
$STH->execute(); 

$queries = $STH->fetchAll(); 

、私はこのように私のデータにアクセスすることができます。$queries[0]['description']$queries[0]['full_name']

はしかし、私の質問はそうのようなデータを取得する簡単な方法があるかどうかです:$job[0]['query']['description']$job[0]['customer']['full_name']

答えて

0

tereskoが述べたように、私はあなたがそれを必要とする理由を理解できません。

PHPコードを見て、情報が入っているテーブルが何であるかわかります。

多分あなたはqueries_descriptionとしてSELECT queries.descriptionのようなことをすることができます、あなたのPHPコードは$queries['queries_description']のようになります。それで十分だろうか?

0

結果をPHPでループし、必要なデータ構造に変換できますが、私が知る限り、ソーステーブルに基づいて配列にデータを自動的にグループ化することはできません。 (やや汚い)代替、SQLを使用するので、同じように、マルチクエリを使用し、元の結果から、一時テーブルを作成し、テーブルごとに結果を選択することです:で、だから、

CREATE TEMPORARY TABLE q AS 
    (SELECT queries.description, customers.full_name FROM queries 
     INNER JOIN customers 
     ON queries.customer_id = customers.id 
    ); 
SELECT q.description FROM q; 
SELECT q.full_name FROM q; 

それらのSELECTステートメントを使用する場合は、結果ごとに必要なすべての列をリストする必要があります。その後、PHPでは、各結果セットを繰り返し処理し、必要に応じてデータを配列(またはオブジェクトなど)に配置する必要があります。 Errr。 fetchAllは依然として必要なものは得られませんが、空でない最初の結果セットのfetchAllはすべてqueriesからすべての行を取得し、2番目の行はすべての行をcustomers

から取得します
関連する問題