このような質問を見つけることができなかったので、これについて間違った方法で行っている可能性があります。
私は製品テーブルを持っています
id - name - parent
---|------|--------
1 |p-A | 0 -default
2 |p-A1 | 1 -default
3 |p-u1 | 0 -USER ADDED
userID と PID を結合する関係テーブルがあります (ただし、on/off フィールドもあります)
id - uid - pid - on(0=no, 1=yes)
---|-----|-----|----
1 | 0 | 1 | 1 - uid-0 for default association(ok?)
2 | 0 | 2 | 1
3 | 1 | 3 | 1 - USER ADDED association
4 | 1 | 2 | 0 - USER does not want this default product
したがって、デフォルトを取得でき、ユーザーはこのようなクエリで製品を追加しましたが、最初の WHERE 句で既に行を選択しているため、明らかに AND 句は何もしません。
SELECT prod.id, prod.name, prod.parent, rel.pid, rel.uid, rel.on
FROM prod, rel
WHERE rel.uid = 0 OR rel.uid = '$uid'
AND rel.on <> 0
PHP関数を使用せずに、クエリで特定のユーザーに対してオフになっている製品を省略する方法を理解できないようです
注: デフォルトのユーザーごとにユーザー/製品の関連付けを作成できることはわかっていますが、すべてのユーザーにこれらの 15 の関連付けを挿入したくありませんでした。また、デフォルトの製品テーブルを作成したくありませんでした。