0

2 つのテーブルで LEFT JOIN/INNER JOIN/JOIN を実行しようとしています (違いを忘れて、MySQL の知識がぼやけてしまいました...)。1 つはcategories、もう 1 つは ですimages

categories特定のparent値を持つすべてのリストを返したいと思います。これらのカテゴリのそれぞれについてimages、そのカテゴリの最新の画像を返します。

私はこのクエリで終わった:

SELECT * FROM `categories` AS `a`
         JOIN (SELECT `im`.`preview` AS `preview`,
                      `im`.`cid` AS `cid` 
               FROM `images` AS `im`
               ORDER BY `im`.`cid` DESC) AS `b`
               ON (`a`.`cid` = `b`.`cid`)
         GROUP BY `preview`

これは、カテゴリ テーブルの各行の画像テーブルから単一の画像を返しますが、結果のテーブルを条件付け/並べ替えようとすると、奇妙な結果が得られ始めます。たとえば、末尾をこれまたは同様のバリエーションに変更します。 :

WHERE `a`.`parent` = 10
GROUP BY `preview`
ORDER BY `a`.`cid

これに関するアイデアをいただければ幸いです。ありがとうございます。

4

1 に答える 1

1

副選択を使用するだけで、結合なしでも実行できます。

SELECT
c.*,
(SELECT preview 
 FROM images img 
 WHERE img.cid = c.cid 
 ORDER BY img.id DESC
 LIMIT 1) AS preview
FROM categories c
于 2012-12-11T12:13:13.193 に答える