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%%

这是我的问题:我不知道如何加入两个表并在我的图表中只显示登录用户的条目。

任何帮助都会很棒。

非常感谢!网络尼科尔

4

1 回答 1

1

看起来您只需要执行以下操作。您将向JOIN表中添加 afamd0_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 中包含 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 回答