2016-05-22 3 views
0

Сегодня у меня возникла проблема с разработкой моего приложения. Я реструктурировал свою базу данных.Codeigniter: выбор разных столбцов из 3 таблиц

У меня есть 3 стола для сообщений, фотографий и для тегов сообщений.

Я присоединился к двум другим таблицам (фотографии, метки).

Я хотел бы запросить первые 3 сообщения только с одним SELECT с фотографиями и тегами, но только первая строка отображается из результатов.

Heres мой код:

$this->db->select('owner, title, time, LEFT(content, 75) as content, category, url, price, county'); 

$this->db->from(POSTS_TABLE); 

$this->db->join(PHOTOS_TABLE, PHOTOS_TABLE.'.post_id = '.POSTS_TABLE.'.url'); 

$this->db->join(TAGS_TABLE, TAGS_TABLE.'.post_url = '.POSTS_TABLE.'.url'); 

$this->db->order_by('time', 'desc'); 

$this->db->limit(3); 

$query = $this->db->get(); 

$posts = $query->result(); 

Моя структура БД:

сообщений таблица:

id, owner, title, content, url 

таблицу теги: Идентификация, post_id (такой же, как столбец URL-адрес из таблицы сообщений), фото (ссылка на фотографию)

теги таблица:

id, post_url (same as the url column from the posts table), tag. 

Пожалуйста, помогите.Как я могу достичь этого с помощью только одного SELECT и отображения правильных результатов?

я не могу использовать ИНЕКЕ, так как я не знаю точного POST_URL

ответ

0

Учитывая имя столбца «URL» является идентификатор строки

Try:

// Code before 
$this->db->join('PHOTOS_TABLE', 'PHOTOS_TABLE.post_id = POSTS_TABLE.url'); 
$this->db->join('TAGS_TABLE', 'TAGS_TABLE.post_url = POSTS_TABLE.url'); 
// Code After 
+0

«Учитывая имя столбца «url» - это идентификатор строки « Не совсем, URL-адрес является уникальным идентификатором сообщения в таблице сообщений. В таблице фотографий и тегов может быть несколько строк с одинаковым столбцом« url ». – kivimango

+0

Вы попробовали код выше? он должен работать. – Sebastian

Смежные вопросы