0

私は5つのテーブルを持っています。1 つのテーブルから最新の 4 つの投稿を選択し、それらの投稿の ID を 4 つの個別の変数で取得して、他のテーブルからのクエリに使用する必要があります。

SELECT user FROM table1 WHERE subcategory = "$input" ORDER BY id DESC LIMIT 4;

だから私は必要なものを持っています。これら 4 つのユーザー ID の結果を新しい変数に割り当てて、同じページの今後のクエリで使用するにはどうすればよいでしょうか。

次のように保存する必要があります。

$user1 = "Sue";
$user2 = "Dave";
$user3 = "Alicia";
$user4 = "Tim";

したがって、次のように使用できます。

SELECT * FROM table2 WHERE user = $user1;
SELECT * FROM table2 WHERE user = $user2;
SELECT * FROM table2 WHERE user = $user3;
SELECT * FROM table2 WHERE user = $user4;

問題を混乱させることはありませんが、最終的な目標は、複数の行を持つことですが、行のすべてのデータが一番上の行のユーザーによって順序付けられる 4 つの列のみを持つことです。行の各セットは、その下のデータに含まれる内容の説明によって区切られているため、注意することが重要です。これらは簡単なまっすぐな列です。このようなもの:

Sue            Dave             Alicia             Tim
Sue Profile    Dave Profile     Alicia Profile     Tim Profile
>>Answers to questions about work:
Sue Income     Dave Income      Alicia Income      Tim Income
Sue Years      Dave Years       Alicia Years       Tim Years
>>Answers to questions about school:
Sue Degree     Dave Degree      Alicia Degree      Tim Degree
Sue Schools    Dave Schools     Alicia Schools     Tim Schools
>>Answers to questions about life:
Sue Born       Dave Born        Alicia Born        Tim Born
Sue Parents    Dave Parents     Alicia Parents     Tim Parents

id の結果を個別の変数に読み取ることができれば、セクション (質問) ごとに次のようなことができます。

SELECT * FROM income WHERE user = "Sue";
SELECT * FROM income WHERE user = "Dave";
SELECT * FROM income WHERE user = "Alicia";
SELECT * FROM income WHERE user = "Tim";

SELECT * FROM degree WHERE user = "Sue";
SELECT * FROM degree WHERE user = "Dave";
SELECT * FROM degree WHERE user = "Alicia";
SELECT * FROM degree WHERE user = "Tim";
4

3 に答える 3

0

JOINS を使用したくない場合は、最初のクエリを実行した後、foreach ループを使用する必要があります...

$user=array(); // i would suggest you for making an array
foreach($result_array as $key->$value)
{
    //here you will get the ids in $value['user']
    // and then you can use them in your queries
    // so no need to store them in different variables and remembering them.
    Edited:
    $user[$key] = $value['user'];
}
于 2012-12-08T20:21:54.290 に答える
0

複数のクエリを実行するよりも、JOINS を使用することをお勧めします。以下はコードです...

SELECT t1.user, t2.* FROM table1 as t1 LEFT JOIN table2 as t2 ON t1.id = t2.user_id WHERE t1.subcategory = "$input" ORDER BY t1.id DESC LIMIT 4

t1.id = t2.user_idのペースで両方のテーブルで同じキーを変更できるといいのですが

于 2012-12-08T20:07:45.370 に答える
0

あなたが求めていることは次のように達成できますが:

$id=1;
${"user".$id}="Sue";

$user1 が "Sue" を持つようにするには、次のように配列をこの目的に使用するのはとても簡単です。

$id=1;
$user[$id]="Sue";

または、クエリで Join を使用して一度にすべてのデータを取得し、必要に応じて再フォーマットしてみてください。

于 2012-12-08T20:08:30.183 に答える