1

私は2つのテーブルを持っています:

  • bpoint->すべての家の表
  • images->家の画像の表(家ごとに最大3つ)。

家の情報とその画像を取得するためのMySQL結合クエリは次のとおりです。

SELECT 
    bpoint.*, bimages.iURL
FROM
    bpoint,
    bimages
WHERE
    bpoint.pointID  = bimages.pointID
AND bimages.pointID = '$tocka'

家の行よりも画像の行が多いので(常に1つの家の結果と1〜3の画像の結果しかありません)、すべての画像に付属する家の結果の2倍を削除する方法はありますか?

4

2 に答える 2

1

GROUP BYと aを使用すると、JOIN探している結果を得ることができます。

SELECT bpoint.*, bimages.url FROM bpoint
LEFT JOIN bimages 
       ON bpoint.id = bimages.pointId
GROUP BY bpoint.id;

http://sqlfiddle.com/#!8/5d1fd/3/0

于 2012-09-03T14:13:22.780 に答える
1

いいえ、2 つの別個のクエリを使用しない限り、それを行う方法はありません。方法があるとしたら、たとえば最初の家の 2 番目の画像の場合、結果セットはどのようになると思いますか?

とにかく、ここで行うことはORDER BY、クエリに句を追加して、同じ家のすべての画像が順番に並んでいることを確認することです。次に、PHP 表示ループで、家の情報を前の行から既に印刷している場合は無視します。

于 2012-09-03T14:17:44.653 に答える