[英]Add column from different table to SQL query (if it finds the id in a list)
我正在嘗試構建棘手的SQL語句,我需要一些建議。
我有這兩個表:
subscribers
| id | name | email |
| 1 | John Doe| john.doe@domain.com|
| 2 | Jane Doe| jane.doe@domain.com|
| 3 | Mr Jones| mr.jones@domain.com|
和
links
| id | campaign_id | link | id_of_user_that_clicked |
| 1 | 8 | http://somesite.com/?utm_source=news1 | 1,2,3 |
| 2 | 8 | http://somesite.com/?utm_source=news2 | 1,2 |
| 3 | 5 | http://somesite.com/?utm_source=news3 | 2 |
拉瓊斯先生的名字和電子郵件很快。 我跑:
SELECT name, email FROM subscribers WHERE id IN ('3')
但是我想將他單擊的URL添加到結果中,該URL存儲在第二個表的鏈接列中。
我試圖做類似的事情:
SELECT name, email FROM subscribers WHERE id IN ('3') LEFT JOIN SELECT link FROM links WHERE (id_of_user_that_clicked LIKE '3')
無濟於事
請注意,在第二張表中,我也將ID與其他ID一起存儲。 我怎么可以匹配subscribers.id在links.id_of_user_that_clicked相應的數字,並有查詢旁邊顯示的姓名和電子郵件中的鏈接。
有任何想法嗎?
感謝您的幫助。 我設法建立一個查詢來滿足我的目的。 我正在粘貼使用的代碼:
SELECT s.name, s.email, l.link FROM subscribers s, links l WHERE s.id IN ('.$subscribers.') AND FIND_IN_SET(s.id, l.id_of_user_that_clicked)
$subscribers
是一個逗號分隔的數組(3456、7865、267等)
它像一種魅力。
您可能希望字符串包含3,而不是3。請嘗試以下操作:
SELECT name, email, link FROM subscribers LEFT JOIN link on id_of_user_that_clicked LIKE '%3%' WHERE subscribers.id = '3'
在MySQL中建議使用連接,因為mysql-joins比子查詢, Join vs.子查詢快
您的sql將類似於(假設您想對名稱進行硬編碼)
select s.name,s.email, l.campaign_id,l.link from subscribers s left outer join links l on s.id= l.id wher s.name = "Mr Jones" <br>
讓我知道是否有幫助!!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.