php查询连接表

时间:2016-06-01 16:09:51

标签: php mysql joomla joomla3.0

在我的Joomla组件中,我有两个表:

表1:#__ 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

表1:#__ 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)如果我想在有效日期范围内对租借单位进行一次查询,该怎么办?

1 个答案:

答案 0 :(得分: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') . ')');

休息你的查询 你正在做unit = 1,我不知道如何给出001A,002A等单位。如果按照上面的语法,那就不会有任何错误。