0

これが私が2つのテーブルを持っている状況です

of
    idof, (somtother data)
    ---------------------
    1, (somtother data)
    2, (somtother data)
    3, (somtother data)

そして、私が持っています

ofc
    id, ofid, idcat
    ------------------
    1,1,1
    1,1,2
    1,2,1
    1,3,3

これは、最初のテーブルからすべてを取得し、2番目のテーブルと結合するために使用するものです

SELECT * FROM `of` 
    LEFT JOIN (`ofc`) 
    ON ( `of`.`idof` = `ofc`.`ofid` )

今、idcatごとに(2番目のテーブルにさらに行があると想像してください)から5行を取得したいのですが、SQLを正しく取得できないようです。私は今までやった

select * from `of` as `f` 
    JOIN `ofc` as `fa` 
    ON `f`.`idof`=`fa`.`ofid`
where (
    select count(*) from `of` as `nf` 
    JOIN `ofc` as `nfa` 
    ON `nf`.`idof`=`nfa`.`ofid` 
    GROUP BY `nfa`.`idcat`
) <= 5;

このサブクエリが複数の行を返すと、mysql が文句を言います。これを行う他の方法はありますか?異なるidcごとに1つのクエリを実行せずに?

4

0 に答える 0