2016-06-01 2 views
0

В моем компоненте Joomla У меня есть две таблицы:PHP запросов объединения таблиц

Table1: #__com_units

Id | unit | posx | posy 
------------------------ 
    1 | 001A | 100 | 200 
    2 | 002A | 101 | 202 
    3 | 003A | 102 | 204 
    4 | 004A | 103 | 206 
    5 | 005A | 104 | 208 

Table1: #__com_reservations

Id | unit |  From |  To | Mood (dropdown with value of Avaliable and Rented) 
-------------------------------------------- 
    1 | 001A | YYYY-MM-DD | YYYY-MM-DD |Available 
    2 | 002A | YYYY-MM-DD | YYYY-MM-DD |Rented 
    3 | 003A | YYYY-MM-DD | YYYY-MM-DD |Available 
    3 | 004A | YYYY-MM-DD | YYYY-MM-DD |Available 
    3 | 005A | YYYY-MM-DD | YYYY-MM-DD |Rented 

я хочу два получить два запроса, чтобы показать результат как кнопки, но не работает:

1) Один в аренду ред единицы

$db = JFactory::getDbo(); 
    $query = $db->getQuery(true); 
    $jinput = JFactory::getApplication()->input; 
    $query->select($db->quoteName(array('id', 'unit', 'mood', 'posx', 'posy'))); 
    $query->from($db->quoteName('#__com_units', '#__com_reservations')); 
    $query->where($db->quoteName('unit')." = ".$db->quote('1'),'AND')  
    ->where($db->quoteName('mood')." = ".$db->quote('rented')); 
    $db->setQuery($query); 
    $results = $db->loadObjectList(); 
    foreach ($results as $result) 
    { 
    echo '<button class=" ' . $result->mood . ' ' . $result->posx . ' ' . $result->posy . '" value=' . $result->id . ' disabled> ' . $result->unit . '</button>'; 
} 

2) Один для блоков Имеющийся

$db = JFactory::getDbo(); 
    $query = $db->getQuery(true); 
    $jinput = JFactory::getApplication()->input; 
    $query->select($db->quoteName(array('id', 'unit', 'mood', 'posx', 'posy'))); 
    $query->from($db->quoteName('#__com_units', '#__com_reservations')); 
    $query->where($db->quoteName('unit')." = ".$db->quote('1'),'AND')  
    ->where($db->quoteName('mood')." = ".$db->quote('available')); 
    $db->setQuery($query); 
    $results = $db->loadObjectList(); 
    foreach ($results as $result) 
    { 
    echo '<button class=" ' . $result->mood . ' ' . $result->posx . ' ' . $result->posy . '" value=' . $result->id . ' disabled> ' . $result->Unit . '</button>'; 
} 

3) А что, если я хочу иметь один запрос для арендуемых единиц, когда они имеют действительный диапазон дат?

ответ

0

Ваш запрос должен быть таким, если вы хотите получить результат из двух таблиц, объединенных

$db = JFactory::getDbo(); 
    $query = $db->getQuery(true); 
    $jinput = JFactory::getApplication()->input; 
    $query->select($db->quoteName(array('a.unit', 'b.mood', 'a.posx', 'a.posy'))); 

    $query->from($db->quoteName('#__com_units', 'a')); 
    $query->join('INNER', $db->quoteName('#__com_reservations', 'b') . ' ON (' . $db->quoteName('a.unit') . ' = ' . $db->quoteName('b.unit') . ')'); 

оставшейся частью вашего запроса Вы делаете блок = 1, я не знаю, как в качестве единицы даются как 001A , 002A и т. Д. Если вы будете следовать приведенному выше синтаксису, то не будет никакой ошибки.

+0

'$ query-> где ($ db-> quoteName ('b.floor')." = ". $ Db-> quoteName ('a.floor'), 'AND') -> где ($ db -> quoteName ('b.building'). "=". $ db-> quoteName ('a.building'), 'AND') \t -> где ($ db-> quoteName ('a.confirmation'). "=". $ db-> quote ('yes')); $ db-> setQuery ($ query); $ results = $ db-> loadObjectList(); foreach ($ results as $ result) { echo '';} 'tnx обновлен и продолжен с помощью этого кода, нет ошибки, но результат пуст! – allogos

+0

plese см. Мое новое сообщение для этого вопроса с подробным описанием. [LINK] (http://stackoverflow.com/questions/37589564/php-query-inner-join-tables/37591285#37591285) – allogos

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