私は表に出なければなりません、contactsそしてgroups。
内部contactsには 3 つの列があります:id first_name last_last
内部groupsには 2 つの列があります:id linked
連絡先をグループに分けたい。したがって、連絡先をグループに追加すると、その連絡先 ID が、linked列内のコンマで区切られた連絡先 ID のリストに追加されるのが最善の方法だと思いました。
したがって、連絡先 1、4、14、および 24 を特定のグループに追加した場合、linked列にはこの値が含まれます1,4,14,24
次に、そのグループの連絡先を表示したいと思います。そのexplode()ため、linked値を取得し、a を使用してforeach()展開された配列を循環し、各ループで MySQL からその連絡先の名と姓を選択して表示します。
それはすべてうまくいきます。私の問題は、そのグループに表示されている連絡先を並べ替えたいと思ったことです。ただし、グループに配置された順序で表示されます。
foreach()名の昇順または降順で並べ替えられるようにしたいのですが、各連絡先を選択してエコーしているため、方法がわかりません。
PS と呼ばれる連絡先に列を作成しgroups、グループ内のすべての連絡先を保存したのと同じ方法で、連絡先が含まれるすべてのグループを保存すると思いました。したがって、連絡先がグループ 1、2、4、および 6 にある場合、その連絡先groups列の値は になり1,2,4,6ます。唯一の問題は、グループ 6 のすべての連絡先を検索しているとしましょう。MySQL ステートメントでそのリストを検索するにはどうすればよいでしょうか? 最善の方法だと思いましたSELECT first_name FROM contacts WHERE groups LIKE '%6%'が、連絡先がグループ 60 にある場合はどうなりますか? 正しいグループに属していなくても、その連絡先も選択されませんか?