請幫我構建MySQL查詢的MySQL查詢與互惠條件
我有2個表,#_ udjacomment AND# _content
目前我有查詢:
$query = "SELECT udja.id";
if($include_author == 1) $query .= ", udja.full_name";
if($include_date == 1) $query .= ", udja.time_added";
if($include_comment == 1) $query .= ", if(CHAR_LENGTH(udja.content) > ".$content_number_of_characters.", SUBSTR(udja.content, 1, ".$content_number_of_characters."), udja.content) AS content";
if($include_link_to_comment == 1){
$query .= ", CASE WHEN LOCATE('com_content:', udja.comment_url) > 0
THEN CONCAT(SUBSTRING_INDEX(udja.comment_url,':',-1),'-', com_content.alias, '.html')
ELSE udja.comment_url END AS comment_url";
}
$query .= " FROM #__udjacomments AS udja, #__content AS com_content WHERE udja.is_published = 1 AND com_content.id = SUBSTRING_INDEX(udja.comment_url,':',-1) AND com_content.checked_out = 0 ORDER by udja.id DESC limit ".$number_of_comments;
但我沒有得到正確的結果。如果我停止試圖從表#__content AS com_content訪問,然後我得到了#__udjacomment結果作爲udja糾正
所以,我想我詢問如何可以表明,包括我想要的領域約束com_content.alias WHERE com_content.id = SUBSTRING_INDEX(udja.comment_url,':',-1)
在某些情況下,udja.comment_url都會有這樣的格式com_content:22,com_content:19
,並在其他情況下,udja.comment_url將有一個像串詞詞的另一個字
這這就是爲什麼我在條件if($ include_link_to_comm ENT == 1)
UPDATE:最終查詢這個樣子(我實現什麼RESPONDER提出並改變的情況下語句和WHERE語句)
$query = "SELECT udja.id";
if($include_author == 1) $query .= ", udja.full_name";
if($include_date == 1) $query .= ", udja.time_added";
if($include_comment == 1) $query .= ", if(CHAR_LENGTH(udja.content) > ".$content_number_of_characters.", SUBSTR(udja.content, 1, ".$content_number_of_characters."), udja.content) AS content";
if($include_link_to_comment == 1){
$query .= ", CASE
WHEN LOCATE('com_content:', udja.comment_url)<>0
THEN CONCAT(SUBSTRING_INDEX(udja.comment_url,':',-1),'-', com_content.alias, '.html')
ELSE udja.comment_url
END AS comment_url";
}
// THEN CONCAT(SUBSTRING_INDEX(udja.comment_url,':',-1),'-', com_content.alias, '.html')
$query .= " FROM #__udjacomments AS udja
LEFT JOIN #__content AS com_content
ON com_content.id = SUBSTRING_INDEX(udja.comment_url,':',-1)
WHERE udja.is_published = 1 ORDER by udja.id DESC limit ".$number_of_comments;
此問題與您的編程語言或您的查詢構建邏輯無關;它是一個* SQL *問題:下一次請刪除編程代碼並僅保留* SQL。 – Bohemian