簡體   English   中英

將來自其他表的列添加到SQL查詢(如果它在列表中找到ID)

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

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