たとえば、
a テーブル (カテゴリ)
label_id label_name
1 バドミントン
2 バスケットボール
3 サッカー
4 卓球
b テーブル
id label_id
1 uid 1 1
2 2 1
3 3 1
4 2 2
5 4 2
6 1 3
7 4 3
uid 名前 性別
1 Zhang San 男性
2 Li Si 女性
3 Wang Wu 男性
4 Zhao Liu 女性
現在、ユーザーはテーブル a をクリックしています 特定の値テーブル c のレコードをテーブル b に表示し、テーブル b の値を表示します。
たとえば、ユーザーがテーブル a (label_id は 1) のバドミントンをクリックし、テーブル b からバドミントンが好きな uid 1 と 3 を持つ人がいることを知ります (label_id 1 の値は 1 と 3)。 (テーブル c の uid が表示されます) 1 と 3) については、Zhang San と Wang Wu のすべての属性が表示され、Zhang San と Wang Wu が好む属性がすべて表示されます (テーブル B による)。リクエストされた結果は次のとおりです:
1. Zhang San 男子バドミントン バスケットボール サッカー
2. Wang Wu 男子バドミントン 卓球
thinkphp を使用しています。どうやってするの?
$sql="SELECT c.*,GROUP_CONCAT(a.label_name) AS sport FROM a INNER JOIN b ON a.label_id=b.label_id INNER JOIN c ON b.uid=c.uid WHERE b.uid IN(SELECT b.uid FROM a INNER JOIN b ON a.label_id=b.label_id WHERE a.label_id = 1) GROUP BY uid";M()->query($sql);