SQL 查询结果的条件串联
Conditional Concatenation of SQL Query results
我想显示一个查询的结果,并根据一个值将其自身串联起来。
我有这个问题
SELECT CONCAT(cl.`name`,\',\') as name
FROM `'._DB_PREFIX_.'category_lang` AS cl
INNER JOIN `'._DB_PREFIX_.'category` AS c ON (cl.`id_category` = c.`id_category`)
WHERE cl.`name` LIKE \'%'.pSQL($searchData).'%\'
AND c.`level_depth` NOT IN (0, 1, 4, 5) and cl.`id_lang`='.(int)$context->language->id.'
根据用户输入的内容显示预订平台的可用位置列表。
这是结果列表:
Lisbon
Ortisei
Palermo
Polignano a Mare
Portugal
内连接table结果如下
如您所见,table 的每个条目都有不同的 level_depth。
我想将 level_depth=3 的所有条目与其 id_parent 的名称连接起来,并显示所有 level_depth=2 的条目而不进行任何串联。
上面的结果应该变成:
Lisbon, Portugal
Ortisei, Italy
Palermo, Italy
Polignano a Mare, Italy
Portugal
这需要 id_parent 为 level_depth 进行左连接 2. 你应该得到这样的结果:
SELECT
CONCAT_WS(\', \', cl.`name`, cl_parent.`name`) as name
FROM `'._DB_PREFIX_.'category_lang` AS cl
INNER JOIN `'._DB_PREFIX_.'category` AS c
ON (cl.`id_category` = c.`id_category`)
LEFT JOIN `'._DB_PREFIX_.'category` AS c_parent
ON (c_parent.`id_category` = c.`id_parent`)
AND c_parent.`level_depth` = 2
LEFT JOIN `'._DB_PREFIX_.'category_lang` AS cl_parent
ON (cl_parent.`id_category` = c_parent.`id_category`)
AND cl_parent.id_lang = cl.id_lang
WHERE
CONCAT_WS(\', \', cl.`name`, cl_parent.`name`) LIKE \'%'.pSQL($searchData).'%\'
AND c.`level_depth` IN (2, 3) and cl.`id_lang`='.(int)$context->language->id.'
我想显示一个查询的结果,并根据一个值将其自身串联起来。
我有这个问题
SELECT CONCAT(cl.`name`,\',\') as name
FROM `'._DB_PREFIX_.'category_lang` AS cl
INNER JOIN `'._DB_PREFIX_.'category` AS c ON (cl.`id_category` = c.`id_category`)
WHERE cl.`name` LIKE \'%'.pSQL($searchData).'%\'
AND c.`level_depth` NOT IN (0, 1, 4, 5) and cl.`id_lang`='.(int)$context->language->id.'
根据用户输入的内容显示预订平台的可用位置列表。
这是结果列表:
Lisbon
Ortisei
Palermo
Polignano a Mare
Portugal
内连接table结果如下
如您所见,table 的每个条目都有不同的 level_depth。
我想将 level_depth=3 的所有条目与其 id_parent 的名称连接起来,并显示所有 level_depth=2 的条目而不进行任何串联。
上面的结果应该变成:
Lisbon, Portugal
Ortisei, Italy
Palermo, Italy
Polignano a Mare, Italy
Portugal
这需要 id_parent 为 level_depth 进行左连接 2. 你应该得到这样的结果:
SELECT
CONCAT_WS(\', \', cl.`name`, cl_parent.`name`) as name
FROM `'._DB_PREFIX_.'category_lang` AS cl
INNER JOIN `'._DB_PREFIX_.'category` AS c
ON (cl.`id_category` = c.`id_category`)
LEFT JOIN `'._DB_PREFIX_.'category` AS c_parent
ON (c_parent.`id_category` = c.`id_parent`)
AND c_parent.`level_depth` = 2
LEFT JOIN `'._DB_PREFIX_.'category_lang` AS cl_parent
ON (cl_parent.`id_category` = c_parent.`id_category`)
AND cl_parent.id_lang = cl.id_lang
WHERE
CONCAT_WS(\', \', cl.`name`, cl_parent.`name`) LIKE \'%'.pSQL($searchData).'%\'
AND c.`level_depth` IN (2, 3) and cl.`id_lang`='.(int)$context->language->id.'