Эхо внутри оператора mysql? - PullRequest
       15

Эхо внутри оператора mysql?

1 голос
/ 08 февраля 2012

Возможно ли повторить внутри оператора MySQL?

Например:

SELECT p.ID,p.post_title,p.guid,p.post_name,p.post_status,name,taxonomy, <?php echo "TEXT HERE"?> GROUP_CONCAT(DISTINCT name ORDER BY name DESC SEPARATOR '|') AS 'tags',

Возможно ли получить этот результат {tag1 | tag2 | tag3} ?

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Похоже, этот вопрос может быть актуальным.Однако это должно делать то, что вы хотите:

-- Table structure:
-- post(_id_), tag (_id_, tag), post_tag(post*, tag*)

SELECT post.id,
    CONCAT('{', GROUP_CONCAT(distinct tag.tag order by tag.tag separator '}{'), '}') AS tags
FROM post
JOIN post_tag ON post.id = post_tag.post
JOIN tag ON post_tag.tag = tag.id
GROUP BY post.id

Что возвращает:

+----+--------+
| id | tags   |
+----+--------+
|  1 | {A}{B} |
|  2 | {B}{C} |
|  3 | {C}    |
+----+--------+

Обязательно включите предложение GROUP BY.Я добавил ссылки на внешние ключи, но не уверен, использует ли MySQL их для этого.

0 голосов
/ 08 февраля 2012

Предполагая, что вы пишете этот запрос на PHP для выполнения в MySQL, вы можете заключить SQL в двойные кавычки, что приведет к анализу переменных:

$sql = " SELECT p.ID ... taxonomy, $someVariable GROUP_CONCAT ... ";

или (предпочтительно IMO) использовать одинарные кавычки и объединять их (также упрощает очистку внутри строки, как показано здесь)

$sql = ' SELECT p.ID ... taxonomy, ' . mysql_real_escape_string($someVariable) . ' GROUP_CONCAT ... ';
...