Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.08.2013, 22:27
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 1  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
По умолчанию Запрос-выборка постов из базы WordPress

Приветствую
В базе есть таблицы
wp_posts
В ней все посты, с названием, полной новостью итд

Также есть таблица wp_term_taxonomy, ассоциации, тут кроме всего прочего располагаются записи о некоторых типах данных, по которым мне нужно делать выборку.
Столбцы в этой таблице
Нажмите на изображение для увеличения
Название: wp_term_taxonomy.jpg
Просмотров: 778
Размер:	42.9 Кб
ID:	29919

Также есть таблица
wp_term_relationships
Название: relationships.jpg
Просмотров: 1261

Размер: 35.5 Кб

И таблица wp_terms
Нажмите на изображение для увеличения
Название: terms.jpg
Просмотров: 198
Размер:	33.8 Кб
ID:	29921

Для выборки всех постов, у которых в поле wp_terms есть "Феодосия" я использую такой запрос
Код:
SELECT post_title,post_content FROM wp_posts WHERE id IN (SELECT object_id from wp_term_relationships WHERE term_taxonomy_id IN (SELECT term_taxonomy_id 
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy
IN (
'location'
)
AND name="Феодосия"
ORDER BY t.name ASC))
Долго мучался, но вроде правильно работает запрос.
А как составить этот же запрос но, чтобы выбирались, скажем, в этом городе, но еще и только wp_terms.slug (то есть, walk,aboard,fly,drive) я не могу. Помогите пожалуйста его составить.

Старый 17.08.2013, 13:50
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 2  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
--------------------------------------------------------
Задача решается использованием библиотеки вордпресса WP_Query

Старый 17.08.2013, 14:23
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
SELECT post_title, post_content FROM wp_posts
JOIN wp_term_relationships
  ON wp_term_relationships.object_id = wp_posts.term_taxonomy_id
JOIN wp_terms
  ON wp_terms.term_taxonomy_id = wp_term_relationships.term_taxonomy_id
JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE name = "Феодосия" AND wp_term_taxonomy.taxonomy = "location"
ORDER BY wp_terms.name ASC
Не берусь утверждать, т.как конкретно таблицы Вордпресса не знаю, но вышеприведенный запрос лучше было бы переписать как-то так... такими подзапросами вы сильно мешаете планировщику оптимизировать запрос.

Вопрос я не совсем понял, вы хотите фильтровать по wp_terms.slug, или вернуть его вместе с уже имеющимся результатом?
Если 1. то добавьте его в where соответствующий, если 2. то добавьте его в первый select.
__________________
Hell is the possibility of sanity

Старый 22.08.2013, 23:08
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 4  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Спасибо за совет про планировщик, но я очень далек от оптимизации запросов.
Мне нужно было выбрать все посты из таблицы wp_posts, так чтобы в таблице wp-terms из столбца name выбирался "Пешком" + только те посты которые соответствуют городу "Феодосия"

Получается вот такая штучка
PHP код:
$args = array(
    
'post_type' => 'excurtion',
    
'tax_query'=>array(
        array(
                
'taxonomy'=>'listingtype',
                
'field'=>'slug',
                
'terms'=>'walk'
                
),
        array(
                
'taxonomy'=>'location',
                
'field'=>'slug',
                
'terms'=>'feodosia'
                
)    
        )
    );

$query = new WP_Query$args );
    if ( 
$query->have_posts() ) {
        while ( 
$query->have_posts() ) {
            
$query->the_post();
            
$id get_the_id();
            
$title get_the_title();
            
$content get_the_content();
            echo 
'<li>' $title .'     || '.$content.'  || ID='.$id.'<br>';

            
$argsThumb = array(
                        
'order'          => 'ASC',
                        
'post_type'      => 'attachment',
                        
'post_parent'    => $id,
                        
'post_mime_type' => 'image/jpeg'
                    
);
            
$attachments get_posts($argsThumb);
            if (
$attachments) {
                foreach (
$attachments as $attachment) {
                    echo 
apply_filters('guid'$attachment->guid).'<br>';
                }
            }
            echo 
'</li>';
        }
    } else {
        
// no posts found
    

Причем, он и картинки к постам сразу извлекает, хорошая штука одним словом

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:12.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.