0

このmysqlデータベースがあり、より大きなMySQLクエリを実行する必要があります。ユーザーAは、usersというテーブルに行を持っています。「トラッカー」と呼ばれるフィールドの値には、ユーザーAが通知を受け取る友人のIDを含むコンマ区切りの値があります。

MySQL->ユーザー(テーブル)->トラッカー(フィールド)-> 2,3,4(値)。

MySQLサーバーは、1つのクエリで値をコンマで区切る必要があります。サーバーがPHPforeachを使用して値ごとに1つのクエリを実行するのではなく、1つのクエリのみを実行する方が、サーバーにとって使いやすいと思います。

次のようなクエリが必要です:SELECT * FROM users WHERE in(SELECT trackers FROM users WHERE id = $ me SEPERATED BY、)

4

2 に答える 2

1

これについての私の感じは、テーブルのデザインがあなたが達成したいものに対して正しくないということです。私の個人的なアプローチは、トラッカーを独自のテーブルに分離することでした。ユーザーは基本的に別のユーザーを追跡しているため、テーブルはユーザーテーブルと2回リンクします。

以下の私の提案するテーブルデザインを参照してください。

提案されたテーブルデザイン

したがって、この設計では、次のようなクエリを介してユーザーが追跡しているすべてのユーザーを選択できます。

SELECT users.* 
FROM trackers
INNER JOIN users ON id = tracker
WHERE user.id = {your user id}
于 2012-04-27T16:47:17.930 に答える
0

私はいつも、あなたのようなクエリの場合、2つのクエリを実行することが通常は最良の解決策であることに気づきました。

最初:

SELECT trackers FROM users WHERE `user_id` = $me

次に2番目、最初の結果を次のように内包します。

SELECT * FROM users WHERE `id` IN (".implode(',',$results).")

それが最善の解決策であるかどうかはわかりませんが、私の経験では、私が取り組んでいる一部のサイトのページの読み込み時間に大きな違いがあります。

于 2012-04-27T16:30:29.960 に答える