2012-04-02 41 views
0

我有這樣的代碼:不能得到子查詢裏面CONCAT工作

GROUP_CONCAT(
    CONCAT( 
    DATE_FORMAT(je.date_entered, '%m/%d/%Y - %h:%i%p'), 
    ' by ', 
    '\n', 
    REPLACE(
    REPLACE(
    REPLACE(
     REPLACE(
     REPLACE(je.description, '<br />', '\n'), 
     '&#039;', '\''), 
    '&quot;', '"'), 
    '&lt;', '<'), 
    '&gt;', '>') 
), 
    '\n\n' ORDER BY je.date_entered DESC SEPARATOR '' 
) AS enteries 

它工作正常。當我添加此子查詢:

' by ', (SELECT first_name FROM users WHERE id = je.created_by), 

導致該集團的毗連:

GROUP_CONCAT(
CONCAT(
    DATE_FORMAT(je.date_entered, '%m/%d/%Y - %h:%i%p'), 
    ' by ', 
    (SELECT first_name FROM users WHERE id = je.created_by), 
    '\n', 
    REPLACE(
    REPLACE(
    REPLACE(
    REPLACE(
     REPLACE(je.description, '<br />', '\n'), 
    '&#039;', '\''), 
    '&quot;', '"'), 
    '&lt;', '<'), 
    '&gt;', '>') 
), 
'\n\n' ORDER BY je.date_entered DESC SEPARATOR '') 
AS enteries 

它打破了整個黨的事情,導致沒有錯誤,只是返回null。

這看起來毛茸茸的糾結,但我沒​​有在PHP中把一切融合在一起的選項 - 它必須全部在MySQL在選擇過程中完成的。

p.s.我沒有發佈輸入查詢,因爲它很可笑,但我可以,如果你想要我。

+1

的愚蠢的問題:對je.created_by的所有情況下,在用戶表中的有效用戶?意思是,從來沒有一個NULL created_by或超出索引值的範圍? – 2012-04-02 19:35:38

+4

關於p.s.謝謝,但張貼的部分就夠荒謬的,因爲它是:) – 2012-04-02 19:37:11

+0

是...這就是我最初的想法是,也許je.created_by接觸什麼,但它包含的價值......當我運行---- GROUP_CONCAT(JE .created_by),'\ n \ n'ORDER BY je.date_entered DESC SEPARATOR'')作爲enteries ----它返回正確的值。 – Banning 2012-04-02 19:37:21

回答

0

這是我的最後,工作液:

GROUP_CONCAT(CONCAT(DATE_FORMAT(je.date_entered, '%m/%d/%Y - %h:%i%p'), ' by ', IF((SELECT first_name FROM users WHERE id LIKE je.created_by) IS NULL, '', (SELECT first_name FROM users WHERE id LIKE je.created_by)), ' ', IF((SELECT last_name FROM users WHERE id LIKE je.created_by) IS NULL, '', (SELECT last_name FROM users WHERE id LIKE je.created_by)), '\n', REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(je.description, '<br />', '\n'), '&#039;', '\''), '&quot;', '"'), '&lt;', '<'), '&gt;', '>')), '\n\n' ORDER BY je.date_entered DESC SEPARATOR '') AS enteries 
+0

很高興聽到您解決它。男人,那個查詢是滿口的。 – Travesty3 2012-04-02 20:14:50

0

當您使用內group_concatconcat子查詢,他們將返回:

  • NULL如果子查詢返回0行或空值
  • 如果子查詢返回1行,則返回1行
  • 如果子查詢返回大於1的錯誤(1242)一行

推測你的子查詢沒有返回任何行或返回NULL值。

+0

啊我的子查詢返回的行只是返回值爲空行......也有人返回3行...所以我不得不改變「= je.created_by」「喜歡je.created_by」 – Banning 2012-04-02 20:12:00

+0

好一點;更新。 – 2012-04-02 20:19:03