1

これまでのところ私はこれを持っています:

SELECT
    l.logo_id,
    l.logo_image_path,
    l.logo_lang,
    (1) AS answered
FROM logos l
WHERE l.logo_level = $level"

ユーザーがこの質問に回答した場合は1を表示し、ユーザーがこの質問に回答しなかった場合は0を表示するように回答したいと思います。結果は、r.logo_idr.user_idを含む結果テーブル内に保存されます

私は試した:

(CASE WHEN l.logo_id = r.logo_id THEN 1 ELSE 0 END) AS answered

しかし、それは機能しません。明らかに、結果テーブルがありません。現在のユーザーに対してこれを実行したいので、user_idチェックを行うので、どこかに追加する必要があります。WHERE r.user_id =$user_data[0]['user_id']

これを手伝ってくれませんか。また、段階的に説明するので、最終的にわかります:)

ty。

4

2 に答える 2

0
SELECT (CASE WHEN l.logo_id = r.logo_id THEN 1 ELSE 0 END) AS answered, l.logo_id,
    l.logo_image_path,
    l.logo_lang FROM logos l, results r WHERE l.logo_level = $level AND ... clause to join two tables ... AND  r.user_id = $user_data[0]['user_id']
于 2013-03-07T12:46:58.327 に答える
0

ロゴが質問テーブルであり、結果が回答テーブルであると仮定すると、各ユーザーは結果テーブルに0から多数の行(回答された質問ごとに1つ)を持ち、次のようになります。

$sql = "SELECT
    l.logo_id,
    l.logo_image_path,
    l.logo_lang,
    CASE WHEN r.logo_id IS NULL THEN 0 ELSE 1 END AS answered
FROM logos l
LEFT OUTER JOIN results r
ON l.logo_id = r.logo_id
AND  r.user_id = ".$user_data[0]['user_id']."
WHERE l.logo_level = ".$level;
于 2013-03-07T12:52:09.513 に答える