Lelio Faieta:
私は自分のサイトのための機能のリストを持つテーブルがあります。それは3つの列を持っていると言います。
id_usr - url - landing_page
1 a.php a.html
2 b.php b.html
3 c.php c.html
4 d.php d.html
それから私は、各ユーザーのために、私は彼が表示することができ、それらの機能を持つテーブルを持っています:
id_usr - func
1 1
1 3
私のクエリは、ユーザーが見ることが許可されているこれらの機能を選択し、そのURLを返します。だから、返すサンプルデータを持ちます
a.php、c.php
そして、これは正しいです。クエリは次のとおりです。
SELECT titolo, descr1,descr2, url, url_opz
FROM `funzioni` JOIN funz_abilitate ON funz_abilitate.id_funzione=id
WHERE funz_abilitate.id_user = $id
私は許可されていない機能のためのランディングページを返すために、私のクエリを改善する方法を疑問に思って。だから、結果は次のようになります。
a.php、b.html、c.php、d.html
だからではなく、URLの利用者のための範囲内にないそれらのページ、のために、landing_page列の値を返します。
どのように私は、MySQL 5.7でこれに行くのですか?カラムはもっと読める作るために編集されました
Mureinik:
あなたは参加してから使用して左を使用することができcase
、ページが許可されているかどうかチェックするために式を:
SELECT f.id, CASE WHEN id_user IS NULL NOT NULL THEN url ELSE landing_page END
FROM funzioni f
LEFT JOIN funz_abilitate fa ON fa.id_funzione = f.id AND fa.id_user = $id