簡體   English   中英

將父查詢列值傳遞給子查詢

[英]Passing parent query column value into subquery

我正在建立一個查詢來獲取用戶獎賞數據。 我正在嘗試通過group_concat函數將所有獎金數據收集到一欄中。

我幾乎已經完成了查詢,但是我無法做的一件事就是將父查詢的用戶ID值傳遞給子查詢以相應地獲取數據。

+----+---------------+------------+------------------------------+
|id  |user_email     |user_name   | prizes                       |
+----+---------------+------------+------------------------------+
|1   |user_email     |user_name   | user1 prizes                 |
|2   |user_email     |user_name   | user2 prizes                 |
|3   |user_email     |user_name   | user3 prizes                 |
|4   |user_email     |user_name   | user4 prizes                 |
|5   |user_email     |user_name   | user5 prizes                 |
|6   |user_email     |user_name   | user6 prizes                 |
|7   |user_email     |user_name   | user7 prizes                 |
|8   |user_email     |user_name   | user8 prizes                 |
+----+---------------+------------+------------------------------+

這是代碼:

SELECT u.ID,u.user_email,u.user_name,
(SELECT GROUP_CONCAT( concatval ORDER BY id DESC SEPARATOR  '|~prize~|~sprt~|' )

FROM (

SELECT s.user_id,s.id, CONCAT_WS('|~value~|~sprt~|', s.id,s.offer, IFNULL(p.post_title,'N/A'), s.time, IFNULL(s.expiry_date,'N/A'), IFNULL(m.meta_value,'N/A'), IFNULL(a.meta_value,'N/A'),s.coupon) as concatval
FROM s_data s
LEFT JOIN sc_posts p ON s.campaign_id = p.ID
LEFT JOIN sc_postmeta m ON s.campaign_id = m.post_id AND m.meta_key = 'phone'
LEFT JOIN sc_postmeta a ON s.campaign_id = a.post_id AND a.meta_key = 'address'
WHERE s.user_id = 2 AND s.status = 'awarded' AND (STR_TO_DATE(s.expiry_date,'%M %d,%Y') > DATE(NOW()) OR s.expiry_date IS NULL OR s.expiry_date = '' )
ORDER BY s.id DESC LIMIT 0,7

    ) tmptable
GROUP BY user_id

) as prizes

FROM sc_users u

GROUP BY u.ID

我需要將第一行的u.id傳遞到第11行,其中說(WHERE s.user_id = 2)以相應地獲取數據。 我嘗試使用此方法,但它顯示為“'where子句'中的未知列'u.ID'”。 有人能幫助我嗎。 提前致謝。

Ypu可以在FROM部分中添加子查詢,並與用戶JOIN這樣

SELECT u.ID,u.user_email,u.user_name,
 prizes.concatval

FROM sc_users u 
  JOIN (SELECT GROUP_CONCAT( concatval ORDER BY id DESC SEPARATOR  '|~prize~|~sprt~|' )

FROM (

SELECT s.user_id,s.id, CONCAT_WS('|~value~|~sprt~|', s.id,s.offer, IFNULL(p.post_title,'N/A'), s.time, IFNULL(s.expiry_date,'N/A'), IFNULL(m.meta_value,'N/A'), IFNULL(a.meta_value,'N/A'),s.coupon) as concatval
FROM s_data s
LEFT JOIN sc_posts p ON s.campaign_id = p.ID
LEFT JOIN sc_postmeta m ON s.campaign_id = m.post_id AND m.meta_key = 'phone'
LEFT JOIN sc_postmeta a ON s.campaign_id = a.post_id AND a.meta_key = 'address'
WHERE s.user_id = 2 AND s.status = 'awarded' AND (STR_TO_DATE(s.expiry_date,'%M %d,%Y') > DATE(NOW()) OR s.expiry_date IS NULL OR s.expiry_date = '' )
ORDER BY s.id DESC LIMIT 0,7

    ) tmptable
GROUP BY user_id

) prizes on.prizes.user_id=u.ID

GROUP BY u.ID

暫無
暫無

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

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