如何在sql中连接这两个表?

时间:2011-06-30 14:59:37

标签: mysql sql joomla

我只需要处于用户所在国家/地区的“__sobi2_item”表中的项目。并将此结果用于Showupdatelisting函数的其余部分。这是我的PHP脚本:

<?php
function showUpdatedListing()
    {

//i found the user country field value...
    global $database;
    $user =& JFactory::getUser();
    $userId = $user->get( 'id' );
    $sql = "SELECT (id) FROM #__community_fields WHERE fieldcode= 'FIELD_COUNTRY'";
    $database->setQuery( $sql );
    $fieldID = $database->loadResult();
    $sql = "SELECT (value) FROM #__community_fields_values WHERE field_id= {$fieldID} && user_id= {$userId}";
    $database->setQuery( $sql );
    $usercountry = $database->loadResult();
// From all the entries i take only ones that have country field like the user has...
    $query = "SELECT `data_txt`, `itemid`, `fieldid` FROM `#__sobi2_fields_data` WHERE (`fieldid` = 6) AND ('data_txt' = {$usercountry})";
    $database->setQuery($query);
    $ResultsArray = $database->loadObjectList();

// We need something here like a Query to load only the entries from $ResultsArray... ??
//....instead of this...
    $config =& sobi2Config::getInstance();
        $database = $config->getDb();
        $now = $config->getTimeAndDate();

        $query = "SELECT itemid FROM #__sobi2_item WHERE (published = 1 AND publish_down > '{$now}' OR publish_down = '{$config->nullDate}') ORDER BY last_update DESC LIMIT 0, 30";
        $database->setQuery($query);
        $sids = $database->loadResultArray();
// ......... show update function goes on...

?>

任何人都可以帮我连接并调整这些查询吗?感谢。

注意:对于最后一个查询(4),我需要过滤$ ResultsArray的项目,只接受已发布的项目并通过last_update对它们进行排序。我知道它是错的,现在之前没有与查询的连接。这就是我在mysql中的表格:

_sobi2_fields_data:

的itemid fieldid data_txt ---&gt;(是每个字段的描述列)

_sobi2_item:

的itemid 已发布---&gt;(如果为1则为1,如果为false则为0) last_update ---&gt;(项目的最后更新日期,如果没有变化,也等于发布日期)

感谢。

1 个答案:

答案 0 :(得分:1)

我不知道你要问的是什么。您的上一个查询(编号4)对我没有意义,它是如何与上述查询相关联的?

[编辑] 我已将上面的第4个表格链接起来,假设itemid是sobi2_item表中项目的主键,并且该值通过itemid链接到sobi_fields_data表。

SELECT 
  cf.id,
  sfd.data_txt,
  sfd.itemid,
  sfd.fieldid
FROM #__community_fields cf
INNER JOIN #__community_fields_values cfv ON cf.id=cfv.field_id
INNER JOIN #__sobi2_fields_data sfd ON cfv.value=sfd.data_txt
INNER JOIN #__sobi2_item si ON sfd.itemid=si.itemid
WHERE cf.fieldcode='FIELD_COUNTRY'
AND cfv.user_id=$userId
AND sfd.fieldid=6
AND si.published=1
AND (si.publish_down > '{$now}' OR si.publish_down = '{$config->nullDate}')
ORDER BY si.last_update DESC LIMIT 0, 30
祝你好运!