0

1 つのテーブルから sql Select を作成し、次に 2 番目のテーブルから sql select を作成して、結果を同じ配列内に配置しようとしています。

私が使用している元の SQL クエリは次のとおりです。

$sql = "SELECT users.*, cursos.titulo, subscriptions.status
FROM users
LEFT OUTER JOIN subscriptions
ON users.userID = subscriptions.user_id
LEFT OUTER JOIN cursos
ON cursos.id = subscriptions.curso_id";

ここに画像の説明を入力

これは、テーブル ユーザーからすべてのデータを取得し、テーブル サブスクリプションの値に基づいてテーブル カーソルからデータを取得します。このように、subcriptions テーブル内でユーザー ID が見つかった回数に応じて、クエリはテーブル users から同じデータを取得するように機能します。サブスクリプションテーブルに含まれているとしましょう

curso_id | user_id 
14       | 48
12       | 48

この場合、2 つの配列が生成され、それぞれにユーザーからのすべてのデータと、cursos からのデータが含まれます。

したがって、私の質問は、最初に SELECT * FROM Users を実行する SQL クエリを作成する方法です。これがテーブルの最初の行に対して完了した後、次のような 2 番目のクエリを実行したいと思います。

SELECT users.id, cursos.titulo, subscriptions.status
FROM users
LEFT OUTER JOIN subscriptions
ON users.userID = subscriptions.user_id
LEFT OUTER JOIN cursos
ON cursos.id = subscriptions.curso_id

そして、すべての情報をタイトル用の 1 つの変数とステータス用の別の変数に入れます。この場合、この情報はさまざまな結果になる可能性があるため、コンマまたはスペースで区切る必要がありますが、配列の同じセル内にロードすることが重要です。

この操作は、ユーザーごとに 1 つの行を含む配列を生成します。この配列には、すべてのユーザー データ列と、タイトル用のさらに 2 つの列と、それらの各行が何回に応じて、cursos テーブルから取得されたさまざまな結果を含む必要があるかのステータスの列が含まれます。この場合のユーザー ID は、「48」がサブスクリプション テーブル内に表示されます。目標は、cursos テーブル内に結果がいくつあっても、このタイトルとステータスの情報を単一のセルに配置することです。どんな助けでも大歓迎です。

したがって、最終結果の配列は次のようになります。ここに画像の説明を入力

4

1 に答える 1

0

私が正しく読んでいれば、データ配列を通常とは少し異なる方法で構築する必要があります。例えば、ほとんどの人が持っている

while($row = mysql_fetch_assoc($result)) {
   $data[] = $row;
}

別のクエリからその配列に追加する場合は、両方のクエリで共通の特定のフィールドを使用して配列にキーを設定する必要があります。

while($row = mysql_fetch_assoc($result)) {
   $key1 = $row['key1'];
   $key2 = $row['key2'];
   etc...
   $data[$row1][$row2][....][] = $row;
}

次に、次のクエリから同じキーを使用します。

SELECT key1, key2, ...

while($row = mysql_fetch_assoc($other_result)) {
   $key1 = $row['key1']
   ...
   $data[$row1][$row2][....][] = $row;
}
于 2013-10-18T15:41:05.510 に答える