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

标签 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 字段编号 data_txt --->(是每个字段的描述列)

_sobi2_item:

itemid 已发布 --->( 如果为真则为 1,如果为假则为 0) last_update --->(该项目的最后更新日期,如果没有更改,也等于发布日期)

谢谢。

最佳答案

我也不知道你想问什么。您的最后一个查询(编号 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

祝你好运!

关于mysql - 如何在sql中连接这两个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536793/

相关文章:

php - 在网站本地备份上禁用 SSL 以在 WAMP 堆栈中进行本地编辑

mysql - MySQL 数据类型声明中 DECIMAL(x, y) 中 x 和 y 的边界值是多少?

PHP如何检查openload视频是否存在?

sql - 从 column1 中删除最后 2 位数字并将这 2 位数字附加到 column2

mysql - 使表格相关

php - Joomla 文章页面 : code to check published or not

php - Joomla 对禁用缓存的请求执行的数据库查询总量是多少?

javascript - 通过 OnClick 按钮插入 MySQL

mysql - 加入一个表的搜索结果 "belongs_to"另一个

mysql - 如何在不使用distinct的情况下避免一对多关联中的重复记录?