0

まず第一に、他の人を助けるために時間を割いてくださった皆さんに感謝したいと思います!このウェブサイトは素晴らしいです、そして私はすでに私の問題のいくつかの解決策を見つけました。でも今は行き詰まっていて、助けを求めたいと思います。SQLテーブルの値に基づいてグラフを表示したい新しいプロジェクトに取り組んでいます。それは減量についてであり、私のユーザーはフォームを使用してデータを入力します。このデータは2つのテーブルに保存されます。

famd0_facileforms_records:

id    user_id    username
--------------------------
14    653        username1
15    648        username2

famd0_facileforms_subrecords:

id    record   element    title        name      type            value
------------------------------------------------------------------------------------
199   14       225        Datum        datum     Calendar        2012-08-22 11:32:07
200   14       226        Gewicht      gewicht   Text            92
201   14       242        BMI          bmi       Text            33.79
209   15       225        Datum        datum     Calendar        2012-08-01 11:53:05
210   15       226        Gewicht      gewicht   Text            83
212   15       242        BMI          bmi       Text            26.20 

次のSQLクエリを使用して、すべてのレコードをグラフに表示することができました。

SELECT CONVERT(d1.value, DATE) AS Datum, CONVERT(d2.value, DECIMAL(5,1)) AS Gewicht  
FROM famd0_facileforms_subrecords AS d1  
INNER JOIN famd0_facileforms_subrecords AS d2 ON d1.record = d2.record  
WHERE d1.element = 225 AND d2.element = 226  
ORDER BY d1.value ASC  

ただし、ログに記録されたユーザーのレコードのみをグラフに含めたいと思います。ログインしたユーザーの変数を使用できます。次に例を示します。

SELECT `id` FROM `famd0_facileforms_records` WHERE `user_id` = %%J_USER_ID%%

そして、これが私の問題です。両方のテーブルを結合して、ログインしているユーザーのエントリのみをグラフに表示する方法がわかりません。

どんな助けでも素晴らしいでしょう。

どうもありがとう!webnicole

4

1 に答える 1

1

以下を実行するだけでよいようです。JOINテーブルにを追加famd0_facileforms_recordsし、WHERE句に user_id のフィルターを配置します。

SELECT x.id, 
    CONVERT(d1.value, DATE) AS Datum, 
    CONVERT(d2.value, DECIMAL(5,1)) AS Gewicht
FROM famd0_facileforms_subrecords AS d1
INNER JOIN famd0_facileforms_subrecords AS d2 
    ON d1.record = d2.record
LEFT JOIN famd0_facileforms_records x
    ON d1.record = x.id
WHERE d1.element = 225 
    AND d2.element = 226
    AND x.user_id = %%J_USER_ID%%
ORDER BY d1.value ASC

エラーが発生しても id でフィルタリングしたい場合は、WHERE句を追加して、 に id を含めないようにすることができSELECTます。

SELECT CONVERT(d1.value, DATE) AS Datum, 
    CONVERT(d2.value, DECIMAL(5,1)) AS Gewicht
FROM famd0_facileforms_subrecords AS d1
INNER JOIN famd0_facileforms_subrecords AS d2 
    ON d1.record = d2.record
LEFT JOIN famd0_facileforms_records x
    ON d1.record = x.id
WHERE d1.element = 225 
    AND d2.element = 226
    AND x.user_id = %%J_USER_ID%%
ORDER BY d1.value ASC 
于 2012-08-23T21:32:31.763 に答える