2013-04-04 3 views
1

Мне нужно показать содержимое двух таблиц; мой запрос состоит в следующем:Добавление результатов столбца в другой столбец

SELECT ID, 
    post_author, 
    post_content, 
    post_title, 
    post_name, 
    guid, 
    post_type, 
    meta_id, 
    post_id, 
    meta_key, 
    meta_value 
FROM wp_posts, 
    wp_postmeta 
WHERE wp_posts.ID = wp_postmeta.post_id 
    AND post_author IN (2); 

В meta_key колонка хранит тип содержимого, мне нужно как веб-сайт, широта, долгота, телефон, электронная почта. Есть ли способ превратить этот столбец в другие столбцы? Например:

ID, 
post_author, 
..., 
meta_id, 
post_id, 
meta_key, 
meta_value, 
website(its a meta_key result), 
latitude(another meta_key result), 
longitude(anoter meta_key result)... 

ответ

1

Не ясно, что вы пытаетесь сделать, но я думаю, что вам нужно, чтобы отобразить мета ключ и значения в качестве заголовков столбцов выступят с мета-значений в качестве значений для каждого столбца. В этом случае вы можете сделать что-то вроде этого:

SELECT 
    ID, 
    post_author, 
    post_content, 
    post_title, 
    post_name, 
    guid, 
    post_type, 
    meta_id, 
    post_id, 
    MAX(CASE WHEN meta_key = 'website' THEN meta_value END) AS website, 
    MAX(CASE WHEN meta_key = 'latitude' THEN meta_value END) AS latitude, 
    MAX(CASE WHEN meta_key = 'longitude' THEN meta_value END) AS longitude, 
    ... 
FROM wp_posts 
INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
WHERE post_author IN (2) 
GROUP BY Id, post_author, ... 

Things отметить:

  • Try, чтобы избежать старый JOIN синтаксис, который используется в запросе; it is a bad habit, и используйте синтаксис ANSI-SQL-92, используя ключевое слово JOIN, а не то, что я сделал.

  • Я использовал MAX для работы вокруг, чтобы развернуть строки в столбцы, вам нужно будет отобразить столбцы, которые не находятся в агрегированной функции в предложении GROUP BY.

+0

Посмотрите на этот скриншот, вы можете увидеть geo_latitude и geo_longitude как результат meta_key, я хочу, чтобы он показывался в другой колонке ... это возможно? http://img856.imageshack.us/img856/4562/query.jpg –

+0

@JefersonSantos - Да, это мой запрос. Ты это пробовал? –

+0

ohh я забыл сказать, на meta_value есть значения, связанные с meta_key, поэтому я хочу сделать столбец geo_latitude с данными из строки meta_value на скриншоте, но с отдельными столбцами, например: | ID | post_author | ... | geo_latitude | geo_longitude | ... | 5281 | 3 | ... | -56.0 ....... | 15.62 ........ | ... Запрос на экране - это мой первый запрос на отправку. ВЫБРАТЬ ID, post_author, POST_CONTENT, post_title, POST_NAME, Guid, post_type, meta_id, post_id, meta_key, meta_value ОТ wp_posts, wp_postmeta WHERE wp_posts.ID = wp_postmeta.post_id И post_author В (3) –