2013-04-16 2 views
0

Я начинаю создавать темы для Drupal.Drupal db_query получить все строки

У меня есть вопрос о Друпал запросов, но я не нашел ответа ...

У меня есть db_query в одном из моих модулей, но возвращать только несколько строк (13 строк всегда, и таблица имеет 20) Как выбрать все строки из одной таблицы?

Мой запрос как этот

$result = db_query("SELECT * FROM bv_calendar c INNER JOIN bv_countries p ON c.country_id = p.country_id INNER JOIN bv_vaccinate v ON c.vaccinate_id = v.vaccinate_id ORDER BY $orderby ASC"); 

while ($class = $result->fetchAssoc()) { 
    $classes[$class["calendar_id"]] = $class; 
} 

Как я могу получить все строки?

Спасибо

+1

Вы можете иметь строки в таблице FROM, у которых нет correspondency в одном или обоих совместных таблиц. Попробуйте LEFT JOIN, и имейте в виду, что это не вопрос Drupal. – pamatt

+0

Вы правы, я потратил столько времени на это! Спасибо за ваши «глаза»! – MrViSiOn

ответ

2

Из взглядов этого я бы сказал, что вы не получаете все строки из * bv_calendar *, потому что вы используете INNER JOIN на ваш запрос, который требует, чтобы быть соответствие записи на ваши таблицы * bv_countries * и * bv_vaccinate *.

Попробуйте заменить INNER JOIN для LEFT JOIN, как и в дальнейшем "Если нет соответствующей строки для правой таблицы в положение ON или USING часть в LEFT JOIN, ряд со всеми колоннами, установленными в NULL используется для правого стола. "от http://dev.mysql.com/doc/refman/5.0/en/join.html.

Если это результат, который вы хотите, то ваш SQL запрос должен быть:

SELECT * FROM bv_calendar c LEFT JOIN bv_countries p ON c.country_id = p.country_id LEFT JOIN bv_vaccinate v ON c.vaccinate_id = v.vaccinate_id ORDER BY $orderby ASC 
Смежные вопросы