[英]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.