0

MySQL データベース

製品

id        name               
1         Product #1            
2         Product #2                
3         Product #3            
4         Product #4 

レビュー

id        idUser    idProduct  Rating
1         1         1          A Long Boring Review that is up to 500 characters
2         1         2          A Long Boring Review that is up to 500 characters   
3         2         4          A Long Boring Review that is up to 500 characters
4         1         1          A Long Boring Review that is up to 500 characters

これらのデータベースの両方から情報を取得し、それらを整理する最良の方法は次のとおりです。

[0] => stdClass Object
        (
            [id] => 1
            [name] => Product #1
            [reviews] => Array(
                [0]=>
                    (
                        [id] => "1"
                        [idUser] => "1"
                        [idProduct] => "1"
                        [Rating] => "A Long Boring Review that is up to 500 characters"
                    )
                [1] = >
                    (...
            )
        )
[1] => stdClass Object
        (
            [id] => 2
            [name] => Product #2
            [reviews] => Array(
                [0]=>
                    (
                        [id] => "1"
                        [idUser] => "1"
                        [idProduct] => "2"
                        [Rating] => "A Long Boring Review that is up to 500 characters"
                    )
                [1] = >
                    (...
            )
        )

GROUP_CONCAT を使用することを考えていましたが、後で多くのパフォーマンスの問題が発生することはありませんか? また、文字数制限はありませんか?

4

2 に答える 2

0

レビューが 1 つしかない場合、これにより 1 次元の結果が得られます。

SELECT `id`,`name`,(SELECT `Review`.`Rating` FROM `Review` WHERE `Review`.`idProduct` = `id`) as `rating` FROM `Product` WHERE 1;

複数のレビューの場合、各製品の構造をループして構築する必要があります。

別のアプローチについては、この質問に対する回答を参照してください: MySQL でリレーションシップを作成する方法

于 2012-04-12T04:45:50.430 に答える
0

Product の結果は 1 対多の関係であるため、最初に反復処理を行わないと、目的のデータを取得できません。

PHP/ CodeIgniterを使用して、多対多の関係を持つ 2 つのテーブルからデータを表示する

コードイグナイター用ですが、アイデアを得ることができます

于 2012-04-12T04:35:04.280 に答える