2011-06-09 30 views
0

我試圖讓它這樣我就可以找到一定的郵政編碼人,但列出了他們的全名,結果在用戶桌子底下ASC爲了...雙打在MySQL查詢

SELECT profiles.id 
    FROM `profiles`,`users` 
    WHERE profiles.zipcode = '$ZIPCODE' 
ORDER BY users.full_name ASC 

它像顯示雙打。

+0

這就像演出雙打?你能把它形成一個問題嗎?什麼是錯誤/問題? – Colum 2011-06-09 00:35:03

+0

它顯示了id的兩倍像是1,1,2,2,6,6,55,55 – 2011-06-09 00:35:41

回答

2

你需要加入我覺得,嘗試像

SELECT Users.full_name 
FROM Users 
INNER JOIN profiles 
ON profiles.user_id = users.id 
WHERE profiles.zipcode = '$ZIPCODE' 
ORDER BY users.full_name ASC 

我假設有在曲線表用戶外鍵?答案假設USER_ID的輪廓表的外鍵

編輯:

外鍵是屬於另一個表中的關鍵。因此,如果您有用戶和個人資料表,那麼您最有可能在個人資料表中有一列,對於每個個人資料參考唯一用戶(假設用戶只有每個個人資料)

+0

外鍵?大聲笑 – 2011-06-09 00:39:30

+0

即時通訊試圖從配置文件中的郵政編碼匹配我放入的所有標識符的列表,並在用戶的基礎上命令基於全名的標識符。 – 2011-06-09 00:40:29

+0

關於外鍵有什麼好笑的? – Kelend 2011-06-09 01:25:33

0

如果您只想顯示不同的ID,那麼這將工作(取決於你的SQL方言,你也可以選擇不同的profiles.id並跳過group by語句)。

SELECT profiles.id 
    FROM (select * from `profiles`,`users` 
     WHERE profiles.zipcode = '$ZIPCODE' 
     ORDER BY users.full_name 
     )subquery 
    GROUP BY profiles.id; 
+0

這擺脫雙重身份證,但沒有按全名排序 – 2011-06-09 00:55:43

+0

糟糕,你是正確的。固定! – 2011-06-09 19:18:20

0

在你查詢你這樣做:

FROM `profiles`,`users` 

,且未提供JOINWHERE相對於這些表的關係的條件。這導致了笛卡兒的產品。你很幸運,你只得到雙打;結果可能很容易變大。