2016-06-02 4 views
-1

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

Table1: #__com_units

Id | Building | Floor |unit_number | posx | posy | mood 
------------------------------------------------------- 
    1 | 01  | 01 | 001A  | 100 | 200 |Rented 
    2 | 01  | 01 | 002A  | 101 | 202 |Available 
    3 | 01  | 01 | 003A  | 102 | 204 |Available 
    4 | 01  | 01 | 004A  | 103 | 206 |Available 
    5 | 01  | 01 | 005A  | 104 | 208 |Rented 
    6 | 01  | 01 | 006A  | 103 | 206 |Available 
    7 | 01  | 01 | 007A  | 104 | 208 |Rented 
    8 | 01  | 01 | 008A  | 103 | 206 |Rented 
    9 | 01  | 01 | 009A  | 104 | 208 |Rented 
10 | 01  | 01 | 010A  | 103 | 206 |Available 

Table1: #__com_reservations

Id | Building | Floor |unit | confirmation 
-------------------------------------------------- 
    1 | 01  | 01 | 002A | NO 
    2 | 01  | 01 | 003A | YES 
    3 | 01  | 01 | 004A | NO 
    4 | 01  | 01 | 006A | NO 
    5 | 01  | 01 | 010A | YES 

я хочу, чтобы получить запрос покажите устройства как кнопки, которые «mood = Rented» и «confirm = YES», но не работают:

<?php 
    $db = JFactory::getDbo(); 
    $query = $db->getQuery(true); 
    $jinput = JFactory::getApplication()->input; 

    $query->select($db->quoteName(array(
     'b.unit_number', 
     'a.confirmation', 
     'b.posx', 
     'b.id', 
     'a.unit', 
     'b.posy', 
     'b.mood' 
    ))); 

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

    $query->where($db->quoteName('b.floor')." = ".$db->quoteName('a.floor'),'AND') 
      ->where($db->quoteName('b.building')." = ".$db->quoteName('a.building'),'AND') 
      ->where($db->quoteName('a.confirmation')." = ".$db->quote('YES')); 

    $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_number . '</button>'; 
    } 
?> 
+1

формат ваш код может быть? – e4c5

+0

@ e4c5 код для отдельной таблицы работает очень хорошо, я пытаюсь получить результат для внутреннего соединения с другой таблицей – allogos

ответ

2

Я не знаю, Joomla, но из вашего кода, он выглядит, как вы пытаетесь присоединиться #__com_units таблицы с использованием #__com_reservations#__com_units.unit_number и #__com_reservations.id. Оба поля имеют разные данные, поэтому вы не присоединяетесь к таблицам должным образом. Таблицы должны быть соединение, использующее поле единиц в #__com_units.unit_number = #__com_reservations.unit_number

+0

Вы правы, исправлены на '#__ com_units.unit_number = #__ com_reservations.unit', но ничего не показывают. – allogos

+0

Каково значение в $ db-> quote ('3')? – Krunal

+0

3 - значение да в подтверждении – allogos

2
SELECT * FROM `#__com_reservations` A 
    JOIN `#__com_units` B 
    ON A.unit = B.unit_number 
    AND A.building = B.building 
    AND A.floor = B.floor 
    WHERE A.confirmation = 'Yes' 
    AND B.mood = 'Available' 

Даже если я не знаком с Joomla надеюсь, что это MySQL запрос будет полезно.

0

Вот решение:

->join('INNER', $db->quoteName('#__com_units', 'b') . ' ON (' . $db->quoteName('b.id') . ' = ' . $db->quoteName('a.unit') . ')'); 
Смежные вопросы