簡體   English   中英

在子查詢中使用父 SQL 列

[英]Using parent SQL column in subquery

早上好。 我正在嘗試從 to_id 的列中提取用戶的用戶名。 在那兒。 如果我只是過濾 to_id,那會很簡單,但我還需要來自另一列 from_id 的記錄。 我試圖做一個 UNION 來解決這個問題,但它當然只從 user.id 3 中提取記錄。

有沒有人碰巧知道解決這個問題的方法? 我對編寫復雜的 SQL 查詢有點陌生。 一直無法從類似的問題中弄清楚。

SELECT
users.username, -- Placeholder until username from to_id can be pulled
payment.id,
to_id,
amount,
state,
type,
timedate
FROM
    payment
LEFT JOIN users ON users.id = payment.to_id AND users.id = payment.from_id 
WHERE to_id = 3 OR from_id = 3

這樣做的結果將是:

+----------+----+-------+--------+----------+------+---------------------+
| username | id | to_id | amount | state    | type | timedate            |
+----------+----+-------+--------+----------+------+---------------------+
| NULL     |  1 |     1 |  12.56 | COMPLETE | u2u  | 2021-11-12 06:09:21 |
| NULL     |  2 |     1 |  43.00 | COMPLETE | u2u  | 2021-11-12 06:17:10 |
| NULL     |  3 |     3 |   2.25 | COMPLETE | u2u  | 2021-11-12 06:22:53 |
+----------+----+-------+--------+----------+------+---------------------+

由於兩個連接是 AND,用戶名為空。 如果是 OR,則會顯示用戶名,但行會出現兩次。 一次使用 to_id 用戶名,一次使用 from_id 用戶名。

因此,您有一個用於所有付款人和收款人帳戶的用戶表和一張帶有兩個 ID 列(付款人和收款人)的交易表? 您需要將用戶表兩次加入交易表,一次獲取付款人信息,一次獲取收款人信息。

select
    payment.from_id,
    from_user.username,
    payment.to_id,
    to_user.username,
    payment.id,
    amount,
    state,
    type,
    timedate
from payment
left join users as from_user 
    on from_user.id = payment.from_id 
left join users as to_user 
    on to_user.id = payment.to_id 
where payment.to_id = 3 OR payment.from_id = 3

暫無
暫無

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

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