2012-08-31 45 views
0

我將與我的tabels直線跳水,這是迅速明顯,我的問題SQL選擇列

表1:

Owner ownerID Name Address userID 
______________________________________________ 
Name  1  Tim "top road" 1 

表2:

User  userID userName password secretQA1 secretQA2 
___________________________________________________________________ 
      1  BigTim  pwhat   7   8 

表3 :

secretQA id question  answer 
_______________________________________ 
      7  "Mums name"  "Tony" 
      8  "Fav sport"  "dressing up" 

無論如何我想要t o do是我知道所有者ID是1,我想給所有者所有的信息!所以我一直在做的是這樣的:

SELECT secretQA.question AS Question1, secretQA.answer AS Answer1, 
secretQA.question AS Question2, secretQA.answer AS Answer2, 
User.password AS Password 
FROM secretQA, owner, User 
WHERE owner.id = 1 
AND SecretQA.id = owner.secretQA1 
AND SecretQA.id = owner.secretQA2 
AND user.id = owner.userID; 

但無濟於事!

這就是我想要的獲得:

Question1 Answer1 Question2 Answer2  Password 
____________________________________________________________ 
"Mums name" "Tony" "Fav sport" "dressing up" pwhat 

乾杯未來所有幫助

編輯:密碼是這裏只是一個例子,也不會是純文本在我的現實版這僅僅是一個簡化的問題我在做什麼

+0

你知道,提前多少祕密問題有? –

+0

您是否以明文存儲密碼?這些表格沒有標準化。遠離隱式表連接也是更好的做法。 – Kermit

+0

** WHERE owner.id = 1 **應該是** WHERE owner.OwnerID = 1 **,因爲前者不是有效的字段名稱。 –

回答

1

爲了得到你想要的東西,你必須連接兩次到SecretQA表。這是爲什麼使用顯式連接語法更好的一個例子。

這應該是你的secretQA表必須在參加兩次參加

 SELECT q1.question AS Question1, 
      q1.answer AS Answer1, 
      q2.question AS Question2, 
      q2.answer AS Answer2, 
      u.password AS Password 
     FROM User u 
     JOIN owner o ON u.id = o.userID 
    LEFT JOIN secretQA q1 on o.secretQA1 = q1.id 
    LEFT JOIN secretQA q2 on o.secretQA2 = q2.id 
     WHERE owner.id = 1 

通知。我已經給它的別名q1q2使這項工作。

哦,和其他人一樣,如果你是以純文本的形式存儲密碼的話, intertubz將會嚴肅地對你說話。

+0

我正在添加密碼來添加到它。在actaullity它會有所不同 – bubblebath

0

在表2中,刪除'secret1'和'secret2'列。在表3中,添加一個新的'userID'列。

之後,你應該能夠做到像

select u.username, u.password, s.question, s.answer 
from table1 as o join table2 as u on o.userid = u.userid 
join table3 as s on s.userid = o.userid 
where o.ownerid = 1 

而且,正如其他人所指出的,存儲密碼以純文本格式是不是一個好主意。

0

試試這個

SELECT q1.question, q1.answer, q2.question, q2.answer, u.password 
    FROM user u 
    JOIN secretqa q1 ON u.secretQA1 = q1.id 
    JOIN secretqa q2 ON u.secretQA2 = q2.id 
    WHERE u.id = ?