2011-07-23 17 views
0

私は2つのテーブルを持ち、1つはプロパティ(住宅、アパートなど)をリストし、もう1つのテーブルは画像ファイル名と関連するプロパティにリンクするIDを保持します。複数エントリを1つのエントリに結合する

これらを一緒に結合する必要がありますが、一度返されたプロパティ情報と、リンクされているX個のイメージレコードだけを取得できるようにする必要があります。

LEFT JOINを使用してレコードを選択できますが、プロパティの重複情報が返されています。 1 3つの画像にリンクされたプロパティはLEFT JOINクエリから3つの結果を返し、結果的に出力ページに詳細を3回印刷します。

それ以降の部分は、プロパティーの詳細(これは単数であるはずです)と複数のイメージ情報を印刷する方法です。

希望すると助かります!

答えて

1

group_concat関数を使用すると、ファイル名のリストを取得できます。デフォルトでは、結果として得られるgroup_concatフィールドに1kのデータしか格納できません。

select prop.*, group_concat(filenames) as files 
    from properties prop 
    join images on prop.id = images.prop_id 
    where prop.owner_id = 'something' 
    group by prop.id 

このフィールドにさらにデータが必要な場合は、group_concat_max_lenプロパティを調整できます。

PHPでは、結果として得られたクエリを調べ、ファイルの各列を爆発させ、結果の配列をループしてイメージを表示することができます。

+0

これは非常に近いです!私が持っている問題は2つの画像を持つ2つのプロパティがあることです。私は所有者ID番号に基づいてプロパティを選択するのにWHERE句を使用しています。このクエリを実行すると、4つのイメージすべてが連結された1つのレコードのみが返されます.2つのレコードにそれぞれ2つのイメージが必要です。何か案は? –

+0

私はprop.idでグループ化するようにクエリを更新しました –

+0

それは魅力的なものですが、画像なしのプロパティがいくつかあります。レコードを返さないのですか?もうちょっとLEFT JOINにするだけですか? –

関連する問題