4

商品IDごとに画像のURLを格納するテーブルがあり、すべての画像の結果を1行にプルするクエリを作成しようとしています。テーブルは次のようになります。

photoFlag photoName objectID

ここで、photoNameは画像への相対パスを保持し、photoFlagは画像のタイプ(フル、サムなど)を識別します。まず、2つの画像(フラグが異なる)を取得するための簡単なクエリを作成することから始めました。これは私が持っているものです:

select t2.pic, t4.pic, t2.id from
 (select p2.photoName as pic, p2.objectID as id from ds_photos as p2 where p2.photoFlag = 2) as t2,
 (select p4.photoName as pic, p4.objectID as id from ds_photos as p4 where p4.photoFlag = 4) as t4
where t2.id=t4.id

これは正しいクエリのようですが、phpMyAdminを介して実行すると、結果が返されることはなく、「SHOWPROCESS」リストに無期限に(少なくとも約40分間)表示されます。無限ループを引き起こしている、ここで見られない間違っていることがありますか?

理想的には、photoFlag = 2(一部の製品には複数の画像があります)の写真のみを取得して同じ行に配置したいのですが、どこから始めればよいのかわかりません。助言がありますか?

助けてくれてありがとう。

4

1 に答える 1

5

使用GROUP_CONCAT::

SELECT id, GROUP_CONCAT(photoName ) As pic 
FROM ds_photos 
WHERE (photoFlag = 2 or photoFlag = 4) and id = ?;
GROUP BY id

を必要なIDに置き換え?ます。

于 2012-08-22T23:43:46.047 に答える