首先,我要感谢所有花时间帮助别人的人!这个网站很棒,我已经为我的问题找到了一些解决方案。 但现在我被卡住了,我想请求一些帮助。 我正在开发一个新项目,我希望根据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
答案 0 :(得分: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
子句,但不要在SELECT
中添加ID:
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