簡體   English   中英

在SQL查詢中合並多行和聯接表

[英]combining multiple rows and join tables in sql query

首先,我要感謝所有花時間幫助別人的人! 這個網站很棒,我已經找到了解決我問題的方法。 但是現在我被困住了,我想請一些幫助。 我正在研究一個新項目,該項目要顯示基於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%%

這就是我的問題:我不知道如何連接兩個表並僅在圖表中顯示已登錄用戶的條目。

任何幫助都會很棒。

非常感謝! 網絡尼克

看來您只需要執行以下操作。 您將在表famd0_facileforms_records添加一個JOIN ,並在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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM