私は表に出なければなりません、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 にある場合はどうなりますか? 正しいグループに属していなくても、その連絡先も選択されませんか?