はのは、私はこれらの2つのテーブルがあるとしましょう:PHPで PHPのSQL - 選択したデータを効率的二つのテーブルから
私はTagNameは、ディスプレイと配列が含まれています「フー」と呼ばれるオブジェクトを作成したいですそのタグ名に割り当てられた番号。..の
私はtagNameを「バー」私は33と545
現在、私は「バーはFooイプサム」と表示し、数字になるだろうを照会したい場合それそうのような:
$stmt = $db->prepare("SELECT * FROM DetailsTable");
$stmt->execute();
$details = $stmt->fetchAll();
$stmt = $db->prepare("SELECT * FROM NumbersTable");
$stmt->execute();
$numbers = $stmt->fetchAll();
$myObjects = array();
foreach($details as $detail){
$foo = new Foo($detail['TagName'], $detail['Display']);
foreach($numbers as $number){
if($number['TagName'] == $detail['TagName']){
$foo.appendNumber($number['Numbers']);
}
}
array_push($myObjects, $foo);
}
class Foo {
private $tag, $display;
private $numbers = array();
public function __construct($tag, $display){
$this->tag = $tag;
$this->display = $display;
}
/** Insert getters and setters */
public function appendNumber($n){
array_push($this->numbers, $n);
}
}
上記のコードは擬似コードなので、私はまだコードを作成しませんでしたが、これはおそらく書いたコードです。最初に質問したかったので質問します。
基本的目的は、fooがTagNameにと表示名と異なるテーブルにある番号の配列を有していなければなりません。 TagNameはDetailsTableで一意です。
TL; DR:NumbersTable
にDetailsTable
からの詳細と、それに接続されている数字を取得し、オブジェクトにそれを置きます。
あなたが本当に外部キーになっているはずです!次に、2つのテーブルをより簡単に結合することができます – JoCoaker
外部キーと結合ステートメントが問題の鍵です! – xNeyte
なぜあなたは車輪を再発明しようとしていますか?あなたは既にテーブルを得たので、単にキーズの左@使用してそれらを結合しよう(特定のタグのための 'のTagName =」Bar''を追加)。ところで、あなたのNumbersTableで 'id'列は、(それはおそらく、自動生成されたシーケンスだと、他の場所で使用されることはありません) – dnoeth