2013-10-03 158 views
1

我爲我的學校製作了一個事件系統,用於處理事件註冊。MySQL加入兩個列表以檢查是否存在記錄

由於我們只希望學生訪問網站上的註冊,所以我有一個表潛在用戶。每個條目都有一個FullName和一個電子郵件。 當用戶在網站上註冊時,網站會檢查學生的電子郵件是否在潛在用戶表中,如果是,則將該用戶添加到用戶表中。

我也有一個表註冊。每當用戶註冊一個事件時,它都被添加到這個表中。 一個條目看起來是這樣的:registrationid事件ID(外鍵事件表),用戶ID(也有外鍵的用戶表,而不是potentialusers)。

我想使用LIKE語句搜索一個名稱,並獲取用戶的結果列表,指定用戶是否註冊了該事件的列以及指出用戶是否甚至完全註冊的列。

這是我試過(我加了大括號的一些評論):

SELECT FullName, Email from potentialusers 
LEFT OUTER JOIN registrations ON (potentialusers.Email = registrations...{1}) 
WHERE events.eventid = '7'{2} AND potentialusers.Email LIKE = '%jazerix%'; 

{1} - >這是第一個問題,因爲,登記表不包含電子郵件列,只有在usertable中包含電子郵件的用戶的引用。

{2} - >就這樣我們可以分開事件,7只是一個例子。

在我想回到這樣的結尾:

sorry for the use of excel

+0

什麼是用戶連接到potentialusers領域? – AgRizzo

+0

像個外鍵?或者是什麼? :) – Jazerix

+0

連接的用戶和潛在用戶的字段名稱是外鍵關係? – AgRizzo

回答

1

試試這個:

SELECT 
    p.FullName, 
    p.Email, 
    IF(u.userid IS NULL, 'False', 'True') RegisteredInSystem, 
    IF(r.registrationid IS NULL, 'False', 'True') RegisteredInEvent 
FROM potentialusers p 
LEFT JOIN users ON p.Email = u.useremail 
LEFT JOIN registrations r ON r.userid = u.id AND r.eventid = 7 
WHERE p.FullName LIKE '%jazerix%' 
+0

好吧!這肯定會給我一些有趣的結果! :D但是我說得對,當我說這只是檢查用戶是否實際註冊在系統中,因爲這是返回結果,說「已註冊」,但它沒有registriondid與它關聯。 另外我更改p.Email到p.FullName :) – Jazerix

+0

是的,這正是我需要^^。如果問題不是太多,你可以向我展示你的例子嗎? :D – Jazerix

+0

哦,我的天啊!它的工作,這真的值得等待,非常感謝你。哦,我的天啊,你不知道我現在有多少微笑:D你們搖滾,莫斯蒂Mostacho和AgRizzo:D – Jazerix

1
SELECT potentialusers.FullName, potentialusers.Email 
, IF(users.userid IS NULL, 'False', 'True') Registered 
, registration.registrationid 
FROM potentialusers 
LEFT JOIN users 
    ON potentialusers.Email = users. useremail 
LEFT JOIN registrations 
    ON registrations.userid = users.id 
WHERE potentialusers.Email LIKE '%jazerix%' 
    AND registrations.eventid = 7; 
+0

讓我試試看,謝謝! :D – Jazerix

+0

我沒有得到它的工作對不起:( – Jazerix

+0

如果我是正確的,這將永遠不會給你一個結果,如果註冊將是錯誤的。 –

0

我想應該是這樣的

select 
pus.fullname, 
rg.email, 
case (select count(*) from registrations where usr.id=foreignkey_connection_to_this_table) 
when 0 then 'FALSE' 
when 1 then 'TRUE' 
else 'MULTIPLE REGISTRATIONS' 
end as registered, 
rg.id as registration_id 
from potentialusers pus 
join users usr using(foreign key connection to this table) 
join event evt using(foreign key connection to this table) 
join registrations rg using(foreign key connection to this table) 
WHERE events.eventid = '7' AND potentialusers.Email LIKE = '%jazerix%'; 

我不知道你的數據庫模型,所以我白色它在'僞'sql.You必須做一些核心。

+0

註冊不包含電子郵件屬性:/ – Jazerix

+0

iam對不起嘗試編輯它到usr.email –