参加するには、代替列を返す方法

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

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=406031&siteId=1