2011-12-20 49 views
-1

我有一個相當複雜的查詢我正在運行,並且在我更改表結構並重寫其他一些文件之前,我想知道是否有人可以告訴我這是否可能。我可以使用MySQL查詢的SELECT部分​​中的AS爲別名添加別名嗎?

SELECT 
    DISTINCT(users.user_id), 
    (resi.curr_state WHERE resi.user_id = "users.user_id") AS current_state 
FROM 
    ci_users AS users, ci_residents AS resi ..... 
WHERE stuff HAVING current_state = '".$php_variable_ill_use."' 

我很高興,如果有必要分享更多的代碼,但是我在這裏主要的問題是我能做到這一點首先作爲語句之前從,甚至以後是否會工作。

+3

警告。你的代碼可能會受到sql注入的影響。 – 2011-12-20 18:26:19

+0

這應該是單詞。 MySQL文檔在這裏有一些信息:http://dev.mysql.com/doc/refman/5.5/en/problems-with-alias.html – hakre 2011-12-20 18:28:14

+0

@hakre什麼?這應該?正如所寫的,第二列在語法上不正確,不是嗎? – 2011-12-20 18:33:21

回答

1

像這樣的東西可能會奏效:

select distinct(users.user_id), 
    (select resi.curr_state 
      from ci_residents 
      AS resi_1 where resi_1.user_id = users.user_id) as current_state 
FROM 
    ci_users AS users, ci_residents AS resi ..... 
WHERE stuff HAVING current_state = '".$php_variable_ill_use."' 
+0

這似乎並沒有工作 – Rooster 2011-12-20 19:09:41

+0

哦,等等,永不言棄是的,它表示感謝。並感謝他們實際回答問題,而不是評論什麼是明確的示例查詢。 – Rooster 2011-12-20 19:36:44

+0

@JohnB在所有應有的尊重下,各級技能和經驗的用戶都可以使用本網站。我不清楚你是否發佈了一個示例查詢,因此我的評論和答案。 – 2011-12-20 19:57:45

1

還有就是要有條件地指定列的輸出方式,是:你用CASE聲明。但它看起來不像你在做什麼。你似乎是指定resiusers表,你可以正常完成使用JOIN之間的關係,就像這樣:

SELECT 
    DISTINCT(users.user_id), 
    resi.curr_state AS current_state 
FROM ci_users AS users 
JOIN ci_residents AS resi ON users.user_id = resi.user_id 

現在,給您的要求背後的邏輯,我想你想所有 user_ids ,但只有那些國家存在的國家。那是對的嗎?如果是這樣,請使用LEFT JOIN來包含所有users記錄,並且只包含關聯記錄存在時的resi記錄。

請詳細說明您是否試圖完成某些東西,而不是我在此處說明的內容。

+0

基本上,我正在尋找一個視線的成員。除了其他一些我沒有列出的條件外,我還需要添加一些符合「WHERE place = state」和「where place = country」的曲調,用戶在搜索表單上輸入狀態和國家作爲輸入,存儲在同一個表中但分配了相同的user_id – Rooster 2011-12-20 18:34:33

相關問題