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