请帮我构建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