#mysql #phpmyadmin
Вопрос:
У меня есть wp_posts
столик:
id
post_title
post_status
post_type
и wp_postmeta
стол:
meta_id
post_id
meta_key
meta_value
Я хочу запросить эти таблицы, чтобы они были представлены как:
post_id | a_meta_key_from_postmeta_col | another_meta_key
--------------------------------------------------------------------------------------
1 | value_of_the_meta_key_assotated | value_of_the_other_key_assotated_with_this_post
2 | ...... | ...
SELECT wp_posts.id, wp_postmeta.meta_key, wp_postmeta.meta_value
FROM `wp_posts`
INNER JOIN wp_postmeta ON wp_posts.id=wp_postmeta.post_id
WHERE wp_posts.post_type='foo'
AND post_status='publish'
AND (wp_postmeta.meta_key='some_key'
OR wp_postmeta.meta_key='another_some_key';
Это и есть результат
id | meta_key | meta_value
1 | some_key | some_value
1 | another_key | another_value
2 | some_key | some_value
... | ... | ...
Это не то, чего я хочу.
(Моя конечная цель — экспортировать это в файл csv)
Комментарии:
1. Пожалуйста, покажите, чего вы ДЕЙСТВИТЕЛЬНО хотите. Не расплывчатое обобщение; приведите несколько конкретных примеров данных с точными результатами, которые вам нужно экспортировать из этого конкретного примера.
2. @MIA ты проверила мое решение ?
Ответ №1:
Если вы хотите экспортировать в csv-файл, вам следует использовать into outfile
инструкцию.
SELECT wp_posts.id, wp_postmeta.meta_key, wp_postmeta.meta_value
FROM wp_posts
INNER JOIN wp_postmeta ON wp_posts.id=wp_postmeta.post_id
WHERE wp_posts.post_type='foo'
AND post_status='publish'
AND wp_postmeta.meta_key='some_key'
OR wp_postmeta.meta_key='another_some_key'
into outfile './export.csv' fields terminated by ';' lines terminated by 'n';
Если вы хотите добавить текст перед каждым результатом столбца, используйте CONCAT_WS()
: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_concat-ws
SELECT wp_posts.id, CONCAT_WS("_","a_key_from",wp_postmeta.meta_key) ,CONCAT_WS("_","a_value_from",meta_value)
FROM wp_posts
INNER JOIN wp_postmeta ON wp_posts.id=wp_postmeta.post_id
WHERE wp_posts.post_type='foo'
AND post_status='publish'
AND wp_postmeta.meta_key='some_key'
OR wp_postmeta.meta_key='another_some_key'
into outfile './export.csv' fields terminated by ';' lines terminated by 'n';
Результат второго запроса будет выглядеть следующим образом:
outfile
Пример инструкции Into:
Комментарии:
1. Я начинаю уставать
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'into outfile './export.csv' fields terminated by ';' lines terminated by 'n' LI' at line 8
2. @MIA какой запрос вы используете?
3. Я получаю одну и ту же ошибку в обоих запросах.
4. @MIA у вас есть
(
после того, как ваш второйAND
я изменился, попробуйте сейчас и скажите, работает ли это5. сейчас:
Unexpected ordering of clauses. (near "FROM" at position 67)